-4

私は現在、ゼロを入力することによって任意のサイズのファイルを作成する作業プログラムを持っています。これは素晴らしいですが、これを行うために必要なファイルのサイズはギガバイトであり、これを行うにはこの方法が永遠にかかります。誰かがこのコードを読んで、これをより速くするためのヒントを提供することができれば、それはありがたいです。

public class fileMaker
{
 public static void main(String[] args) throws IOException
 {
     fileMaker fp = new fileMaker();


     Writer output = null;
     File f = new File(args [1]);
     output = new BufferedWriter(new FileWriter(f, true));
     output.write("0");


     long size = fp.getFileSize(args[1]);

     long mem = Long.parseLong(args[0]) * 1073741824; //1 Gigabyte = 1073741824 bytes        


     while(size < mem)
     {
            output.write("0");


            output.flush();

            size = fp.getFileSize(args[1]);
            //System.out.println(size + " bytes completed out of " + mem);

            double avg = (double)size / mem * 100;

            System.out.println(avg + "% complete");

     }
     output.close();
     System.out.println("Finished at - " + size / 1073741824  + " Gigabytes");

 }


private long getFileSize(String fileName) 
{
    File file = new File(fileName);        
    if (!file.exists() || !file.isFile()) 
    {
        System.out.println("File does not exist");
        return -1;
    }
    return file.length();
}

}

4

1 に答える 1

3
  1. 一度に複数のバイトを書き込みます。一度に4096バイトの倍数を書き込みます。
  2. 書き込みのたびにストリームをフラッシュしないでください。
  3. ファイルサイズを照会する代わりに、size書き込むたびにインクリメントするだけです。
于 2013-03-22T13:00:51.500 に答える