Javaでは、相対パスフォルダにファイルを作成します。

5494 ワード

//*需要:F盤のjavawork\splitysフォルダに分割されたファイルを保存します。通常は直接にフォルダのパスを絶対パスと書くことができます。
FileOutputStream fos = new FileOutputStream("F:\\javawork\\splits\\");
しかし、実際には相対的なパスを使いたいです。このように*/////先に現在のパスをFileオブジェクトにパッケージしてもいいです。
File splits = new File("splits");
if(!splits.exists())
{
    splits.mkdir();
}
//そしてそのままsplitsの後ろについていくだけでいいです。
FileOutputStream fos = new FileOutputStream(splits+"\\");
カットファイルとマージファイルの学習で発生した問題です。元のデモコード(内部で使用されているEumerationを複写する方法でArayListを使って効率を高める方法):
/*
           
*/
import java.io.*;
import java.util.*;
class SplitFile 
{
    public static void main(String[] args) throws IOException
    {
        splitFile();
        merge();
    }
    public static void merge()throws IOException
    {
        //             
        File splits = new File("splits");
        if (!splits.exists())
        {
            splits.mkdir();
        }
        ArrayList al = new ArrayList();
        for (int x=1; x<=2; x++)
        {
            al.add(new FileInputStream(splits+"\\"+x+".part"));
        }
        //Enumeration       ,            final  
        final Iterator it = al.iterator();
        Enumeration en = new Enumeration()
        {
            public boolean hasMoreElements()
            {
                return it.hasNext();
            }
            public FileInputStream nextElement()
            {
                return it.next();
            }
        };
        SequenceInputStream sis = new SequenceInputStream(en);
        FileOutputStream fos = new FileOutputStream(splits+"\\"+"0.mp3");
        byte[] buf = new byte[1024];
        int len = 0;
        while((len=sis.read(buf))!=-1)
        {
            fos.write(buf,0,len);
        }
        fos.close();
        sis.close();
    }
    public static void splitFile()throws IOException
    {
        FileInputStream fis = new FileInputStream("0.mp3");
        //             
        File splits = new File("splits");
        if (!splits.exists())
        {
            splits.mkdir();
        }
        byte[] buf = new byte[1024*1024*2];
        int len = 0;
        int count=1;
        while((len=fis.read(buf))!=-1)
        {
            FileOutputStream fos = new FileOutputStream(splits+"\\"+(count++)+".part");
            fos.write(buf,0,len);
            fos.close();
        }
        fis.close();

    }

}