2013-03-22 4 views
-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(); 
} 

}

+1

는 ... 즉,이 코드는 의도적으로 느린 것으로 보인다 파일 – Doorknob

+0

임 "나는 10킬로바이트에 5GB 용량의 파일을 압축 어떻게"를 묻는 것과 같습니다. – user2007843

+0

을 채우는 빠른 방법을 요구 – harold

답변

3
  1. 는 한 번에 하나 이상의 바이트를 작성합니다. 한 번에 4096 바이트의 몇 배를 씁니다.
  2. 모든 쓰기 후에 스트림을 플러시하지 마십시오.
  3. 파일 크기를 쿼리하는 대신 쓸 때마다 size 만 증가 시키십시오.
+0

감사하지만 크기를 어떻게 늘릴까요? – user2007843

+0

음,'size + = 얼마나 많은 바이트를 썼습니까? '? –

+0

내가 생각했던 바로 그 것이지만'output.write ("0000000 ....")와 같은 파일에 쓰고 있다면'얼마나 많은 바이트를 쓴 것인가? '에서 어떻게 정의하겠습니까? – user2007843