不关闭 PrintWriter 对象的后果

The consequences of not closing a PrintWriter object

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

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

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

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

始终关闭每个编写器,并在完成后 reader。

通常,输出被收集在内存中,只是偶尔写入磁盘。这样做是因为更大的磁盘写入效率更高。

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