我的程序假设是在PhotoAlbum中维护照片集。它首先读取照片文件夹并将其添加到我的PhotoAlbum。然后,它打印一个菜单,该菜单允许用户列出所有照片,添加照片,查找照片,保存并退出程序。现在,如果我运行程序,它将把100张照片添加到PhotoAlbum中,但是如果我不保存就退出程序,即使没有添加照片或未对PhotoAlbum做任何事情,它也会清除正在读取的文件,并且我不确定为什么。

这是我打印到文件的方法: 通用标签

以及实例化PrintWriter的位置: 通用标签

在我的runMenu方法中调用它的位置: 通用标签

有帮助吗?

解决方案

打开流后,可能没有关闭流。如果已打开它,则无论如何都应这样做(而不仅仅是在实际修改时)。

这就是为什么finally块在Java中有用的原因,请在此处有关使用Java流的良好做法。.

其他提示

通过将File对象传递到Print Writer 中来打开文件时,实际上是由PrintWriter来控制文件的打开方式(最有可能是Create),这将删除现有文件并准备就绪。写一个新的。

因为您从不保存(关闭流),所以PrintWriter中缓冲的任何数据都不会输出到文件中。

您需要重构文件方法,如果使用File.Open(...)函数,则可以指定附加会话。 通用标签

这样一来,打开文件就不会清除文件,您可以将其追加到末尾。

或者,您也可以通过使用FileMode.Create打开文件来强制将其清除。

P.S。您应该了解 using 块,它非常有用。

确保关闭流。 还要检查您没有覆盖原始文件。 Aren B提供了一些C#代码,但是Java等效代码是: 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top