【问题标题】:Java: PrintWriterJava:打印编写器
【发布时间】:2011-07-18 13:59:58
【问题描述】:

我正在尝试使用 PrintWriter.java,但我遇到了一个相当奇怪的问题,我无法弄清楚我在这里缺少什么。

MyPrintWriter.java

public class MyPrintWriter {

    public static void main(String[] args) {

        File myFile = new File("myFileDirectory/myFileName.txt");
        try {

            FileWriter fw = new FileWriter(myFile);
            PrintWriter pw = new PrintWriter(fw);
            pw.println("Hello World!");

            pw.close();

        }   catch (FileNotFoundException e) {
                System.err.println("File not found: " + myFile);
        }   catch (Exception e) {
                e.printStackTrace();
        }       
    }

}

MyFileWriter.java

public class MyFileWriter {
    public static void main(String[] args) {

        File myFile = new File("myFileDirectory/myFileName.txt");
        try {
            InputStreamReader isr = new InputStreamReader(System.in);
            BufferedReader br = new BufferedReader(isr);

            FileWriter fw = new FileWriter(myFile);
            PrintWriter pw = new PrintWriter(fw);

            String input;
            input = br.readLine();
            while(input != null) {
                pw.println(input);
                input = br.readLine();
            }           
            br.close();
            pw.close();

        }   catch (FileNotFoundException e) {
                System.err.println("File not found: " + myFile);
        }   catch (Exception e) {
                e.printStackTrace();
        }       
    }

}

MyPrintWriter.java 正在愉快地写入 myFileName.txt 文件,但 MyFileWrite.java 不能。

有人可以帮助我了解我在这里缺少什么吗?

【问题讨论】:

    标签: java filewriter printwriter


    【解决方案1】:

    您可能需要flush您的印刷作家。

    PrintWriter constructor with a FileWriter parameter 创建一个 PrintWriter 并将 autoFlush 设置为关闭

    pw.close(); 之前调用pw.flush() 应该可以解决问题

    【讨论】:

    • 打电话给pw.close() 暗示 pw.flush()!无需在close() 之前调用flush()autoFlush 仅表示在println 之后会自动调用flush()
    • @Nivas 和 @Joachim: while(input != null) { pw.println(input); pw.flush(); input = br.readLine(); } 工作 :)
    • @skip:您是否在您的应用程序仍在运行时读取文件?如果这就是您所需要的,那么 autoFlush 实际上可能就是您所需要的。如果您在应用程序停止时(或在调用 close() 时)只需要一个完整的文件,那么问题中的当前代码就足够了。
    • @Joachim:没有在应用程序中运行它。只是在读取文件。
    猜你喜欢
    • 2017-12-11
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多