从System.out.println写入文件

时间:2011-05-23 02:31:10

标签: java file createfile

我已经替换了很多字符串并输出了结果,现在我正在尝试将这些行写入文本文件。这就是我做的。我创建了一个新文件:

File newfile = new File("/Users/Bill/Desktop/newfile.txt");
    if (newfile.exists()) {
        System.out.println("File exists");
    } else {
        newfile.createNewFile();
        System.out.println("New file created");

    }

然后我尝试将创建的文件写入System.out.println(lines [i])的结果;

    try {
    WriteToFile newFile = new WriteToFile(newfile, true);
    newFile.write(lines[i]); 
    // lines[i] is what I used to print out System.out.println(lines[i])  
    }

    catch (IOException e) {
        System.out.println("Error.");
    }
但是,我没有得到我期待的东西。有什么建议吗?

WRITETOFILE:

public class WriteToFile {
private String path;
private boolean append = false;

public WriteToFile(String filename) {
    path=filename;
}

public WriteToFile(String filename, boolean appendfile){
    path=filename;
    append=appendfile;
}

public void write(String text) throws IOException {
    FileWriter filewrite = new FileWriter(path, append);
    PrintWriter print = new PrintWriter(filewrite);

    print.printf("%s" + "%n", text);
    print.close();
}
}

3 个答案:

答案 0 :(得分:1)

每次调用WriteToFile.write时,它都会重新打开文件进行写入,截断文件的原始内容。您应该在构造函数中打开文件一次(并将PrintWriter存储在字段中),然后添加close方法,为close调用PrintWriter

在主叫方面,请执行以下操作:

WriteToFile writer = new WriteToFile(filename);
try {
    // writer.write(...);
} finally {
    writer.close();
}

通过在close块中调用finally,即使异常导致函数提前退出,也可以确保文件已关闭。

答案 1 :(得分:0)

查看代码中FileWriter构造函数的第二个参数。

FileWriter filewrite = new FileWriter(path, append);

看,它说“追加”。猜猜它做了什么。如果您不确定,请阅读the documentation

现在,看看你如何初始化append

private boolean append = false;

此代码完全按预期运行。这只是开发人员的错。解决它:)

答案 2 :(得分:0)

只需使用该方法在System上设置fileName即可 的 System.setOut(文件名);

然后,只要我们想使用System.out.println()进行打印,它就会直接打印到你提到的fileName。