【问题标题】:PrintWriter creates file but doesn't write [duplicate]PrintWriter 创建文件但不写入 [重复]
【发布时间】:2014-08-31 14:54:04
【问题描述】:

我在某处网站上使用了示例代码,它看起来像这样:

package gdt.enlightening;

import notify.*;
import javax.swing.*;
import java.io.*;
import java.util.logging.Level;
import java.util.logging.Logger;

public class export {
    public static void Export(String path) {

        try {
            // Package.json
            File file = new File(path + "/package.json");

            FileWriter pw = new FileWriter(file);
            pw.write("test");
            pw.write("Hi!");

            pw.write("    \"id\": \"" + main.packageID + "\",\r\n");
            pw.write("    \"name\": \"test\",");

            notify.Notify.info("GDT Enlightening", "Finished exporting without errors.");
        } catch (Exception e) {
            System.out.println(e.toString());
        }
    }
}

它会创建文件但将其完全留空。我似乎不明白为什么。我需要一个“文件”对象吗?

我尝试了此处找到的不同解决方案,但它不起作用。我也玩过打印方法。

编辑:最后通过调用pw.close() 修复

【问题讨论】:

  • 嗯,应该可以(对我来说很好)。您确定您查看的是正确的文件吗?
  • 什么是路径?请详细说明。
  • 该代码没有任何问题。也许您在寻找错误的文件夹。
  • 您没有关闭 FileWriter 实例。也许数据在缓冲区中丢失了。
  • @user3902017 在原始问题中,您确实专门关闭了 PrintWriter。问一个关于完全伪造代码的问题有什么意义? (谁赞成这个垃圾?)

标签: java printwriter


【解决方案1】:

您应该添加pw.close() 来解决此问题。

否则数据将丢失在缓冲区中。

【讨论】:

  • 为了教育起见,pw.flush() 会将所有数据推送到磁盘并保持文件打开以供进一步写入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多