Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么文件只包含第1行_Java_File_Filewriter_Printwriter - Fatal编程技术网

Java 为什么文件只包含第1行

Java 为什么文件只包含第1行,java,file,filewriter,printwriter,Java,File,Filewriter,Printwriter,生成的y.txt仅包含第1行为什么第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

生成的y.txt仅包含第1行为什么第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();
        } 
    }
}

关闭PrintWriter后,文件将关闭


PrintWriter.close()的Javadocs声明:“关闭流并释放与之相关的任何系统资源。关闭以前关闭的流没有任何效果。”

您不需要两个PrintWriter,这是不必要的。整个文件只能使用一个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();
}

希望这有助于

查看文档,我们可以看到调用关闭

“关闭流并释放与其关联的任何系统资源”

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

公众假期结束() 关闭流并释放与之关联的所有系统资源关闭以前关闭的流没有效果。

因为您关闭了pw1,PrintWriter的第一个实例将关闭该框架内的所有实例

快乐编码


哎哟,没想到这已经被回答了

我很确定
pw1.close()
调用了
fw.close()
。你说得对,我把pw1.close()向下移动了一个位置,它工作了,谢谢