2014-11-23 103 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”可能是空的。但它没有。当我尝试没有阅读器txt我的意思是“字符串一切=”一些文本“,它发生一样。它发生空如何在Java中创建和编写.Txt文件?

+1

不应该关闭fileWriter吗? – niqueco 2014-11-23 19:59:48

+0

您需要关闭您的资源。 – Kayaman 2014-11-23 19:59:51

+0

怎么样? fileWriter.close? – Ahmet 2014-11-23 20:00:21

回答

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 2014-11-23 20:05:56