不关闭PrintWriter对象的后果

问题描述

我写了一个非常基本的程序,它接收2个大小相等的温度列表,并使用它们创建一个.CSV文件。奇怪的是,当我忘记关闭PrintWriter对象并运行程序时,输出文件缺少300ish结果(我不知道丢失了哪些结果),并且取决于println中逗号的写法是这样的: ,“或类似这样的”,则可能会丢失不同数量的结果。当我关闭PrintWriter时,无论如何编写逗号,输出文件都将具有正确数量的结果。我只是想知道是否有人可以解释为什么会这样,我以为关闭PrintWriter就像关闭Scanner对象一样会关闭它?

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

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

解决方法

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

处理完所有作者和读者后,始终关闭它。

,

通常,输出收集在内存中,并且仅不时写入磁盘。这样做是因为较大的磁盘写入效率要高得多。

当您不关闭编写器时,您会错过最后一个充满输出的缓冲区。但是还有其他负面影响,文件将保持打开状态,直到程序退出。如果反复执行此操作,将导致资源泄漏。