2014-11-23 4 views
-1
import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 


public class FileGenerator { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 

     File outputFile; 
     BufferedReader reader; 
     FileWriter fileWriter; 

     try { 
      outputFile = new File("test.txt"); 
      outputFile.createNewFile(); 

      fileWriter = new FileWriter(outputFile, false); 

      reader = new BufferedReader(new FileReader("template.txt")); 

      StringBuilder sb = new StringBuilder(); 
      String line = reader.readLine(); 

      while (line != null) { 
       sb.append(line); 
       sb.append(System.lineSeparator()); 
       line = reader.readLine(); 
      } 

      String everything = sb.toString(); 
      fileWriter.write(everything); 

     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } finally { 

     } 
    } 
} 

fileWriter는 test.txt를 만 들지만 test.txt 내부의 문자열은 비어 있습니다. 나는 그것이 나던 것이 비어있게되기를 바란다. 그런데 "String everything"은 비어있을 수 있습니다. 그러나 그것은 isnt. 독자가 txt를 사용하지 않으려 고 할 때 "문자열 다 = 일부 텍스트"를 의미 할 때 비어있게됩니다.Java로 .Txt 파일을 만들고 쓰는 방법은 무엇입니까?

+1

fileWriter를 닫지 않아야합니까? – niqueco

+0

리소스를 닫아야합니다. – Kayaman

+0

어떻게? fileWriter.close? – Ahmet

답변

1

everything의 내용이 운영 체제 및/또는 Java의 I/O보다 작기 때문에 파일이 비어 있습니다. 버퍼를 닫고 프로그램을 종료하면 파일이 제대로 닫히지 않고 종료됩니다.

파일에 내용을 쓰고 파일을 닫지 않고 쓰도록하려면 flush()으로 전화하십시오. I/O를 열 때마다 리소스를 사용하는 경우 close()을 사용하여 닫습니다. close()은 버퍼 플러시를 의미합니다.

Java 7 provi DES는 는 시도 -과 - 자원이 같은 그것에 대해 :

try (FileWriter writer = new FileWriter("foo.txt")) { 
    writer.write("Hello, world!\n"); 
    writer.flush(); 
    // do more stuff with writer 
} // <- closes writer implicitly as part of the try-with-resources feature 
+0

감사합니다. 폐쇄 작가와 그것이 작동합니다. – Ahmet

관련 문제