myfile.txt中没有任何内容

时间:2014-04-23 18:33:10

标签: java file filewriter

为什么myfile.txt为空?我尝试将内容附加到myfile.txt但是当我打开它时它仍然是空的。文件正在创建。

import java.io.*;

public class NewClass1 {
    @SuppressWarnings("empty-statement")
    public static void main(String[] args) throws IOException{
        File inputFile = new File("input.txt");
        FileReader in1=null; 
        in1 = new FileReader("input.txt");
        char c;
        int count=0;
        int r;
        String s="";     
        File file;
        file = new File("myfile.txt");
        file.createNewFile();
        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("myfile.txt", true))); 

        while((r=in1.read())!=-1) {
            c = (char)r;
            s=s+c;

            if (c == '1' ) {
                count++;
            }
            if (c == '\n') {
                 if (count>1) {
                     out.print(s); 
                 }
                 s = "";
                 count=0;
            }
        }
    }       
}

1 个答案:

答案 0 :(得分:6)

您必须刷新并关闭输出文件,才能将最后一个充满字符的缓冲区保存到磁盘中。

out.flush();
out.close();

BufferedWriter的目的是将这些字符保存在内存中的缓冲区中,直到刷新缓冲区为止。

致电'关闭'也应该刷新,所以调用它也应该写入缓冲区。

还有其他可能的原因:我假设您已经检查过input.txt不为空,并且其中至少有一个换行符(\ n)。该算法仅在看到换行符时才会写入,如果不存在换行符,则不会写入任何内容。

最后,我不建议使用' FileWriter'因为字符编码取决于您的操作环境,这可能会改变。最好指定UTF-8' (或其他一些特定的字符编码),带有OutputStreamWriter和FileOutputStream。