【问题标题】:The consequences of not closing a PrintWriter object不关闭 PrintWriter 对象的后果
【发布时间】:2020-08-24 05:20:03
【问题描述】:

我编写了一个非常基本的程序,它采用 2 个大小相同的温度列表并使用它们创建一个 .CSV 文件。奇怪的是,当我忘记关闭 PrintWriter 对象并运行程序时,输出文件丢失了 300 个结果(我不知道丢失了哪些结果),并且取决于 println 中的逗号是如何写成这样的“ , " 或 like this "," 它会丢失不同数量的结果。当我关闭 PrintWriter 时,无论逗号是如何写入的,输出文件都会有正确数量的结果。我只是想知道是否有人可以解释为什么会发生这种情况我认为关闭 PrintWriter 会像关闭 Scanner 对象一样关闭它?

目前无法访问代码,但它只是一个 for 循环,它将以这种格式打印 2 个数组的当前索引的值

PrintWriter.println(list1.get[i] + "," + list2.get[i];

【问题讨论】:

    标签: java theory printwriter


    【解决方案1】:

    通常情况下,输出会收集在内存中,并且只会不时写入磁盘。这样做是因为更大的磁盘写入效率更高。

    当您不关闭写入器时,您会错过最后一个充满输出的缓冲区。但也有其他负面后果,文件将保持打开状态,直到程序退出。如果你重复这样做会导致资源泄漏。

    【讨论】:

      【解决方案2】:

      除了未正确刷新写入器内容并因此部分丢失之外,每个打开的写入器都会占用资源(RAM 和操作系统文件句柄),并且还会阻止其他进程访问该文件。

      完成后,请务必关闭所有作者和读者。

      【讨论】:

        猜你喜欢
        • 2021-08-06
        • 1970-01-01
        • 1970-01-01
        • 2013-09-30
        • 2014-12-17
        • 2023-01-26
        • 1970-01-01
        • 2018-07-16
        • 1970-01-01
        相关资源
        最近更新 更多