为什么文件只包含Line1

时间:2014-12-05 18:26:47

标签: java file filewriter printwriter

Generated y.txt只包含line1为什么第2行是abcent

public class Writer{    

    public static void main(String[] args) {
        try {
            FileWriter fw = new FileWriter(new File("y.txt"));
            PrintWriter pw1 = new PrintWriter(fw);
            pw1.println ("line1 ");
            pw1.close();
            PrintWriter pw2 = new PrintWriter(fw);
            pw2.println("line2 ");
            pw2.close();
        } catch (IOException e) {
            e.printStackTrace();
        } 
    }
}

4 个答案:

答案 0 :(得分:0)

关闭PrintWriter后,文件将关闭。

PrintWriter.close()状态的Javadoc:"关闭流并释放与之关联的所有系统资源。关闭之前关闭的流无效。"

答案 1 :(得分:0)

您不需要两个PrintWriters,这是不必要的。您应该只为整个文件使用一个PrintWriter

public static void main(String[] args) {
try {
    FileWriter fw = new FileWriter(new File("y.txt"));
    PrintWriter pw1 = new PrintWriter(fw);

    pw1.println ("line1 ");
    pw1.println("line2 ");

    pw1.close();
} catch (IOException e) {
    e.printStackTrace();
}

希望这有助于

答案 2 :(得分:0)

查看close的文档,我们可以看到调用close

关闭流并释放与之关联的所有系统资源

这包括您的FileWriter fw,因此,当您尝试使用fw初始化pw2时,由于在pw1上调用close(),资源fw已经关闭。

答案 3 :(得分:0)

  

public void close()   关闭流并释放与其关联的所有系统资源。 关闭之前关闭的流无效。

因为您关闭了pw1,它是PrintWriter的第一个实例,它会关闭该帧中的所有实例。

Java Doc's for Print Writer

快乐的编码!

哎呀没看到这已经得到了解答!