我试图将一些信息附加到文本文件中,但该文件只显示最后写入的元素。
有很多 Engineer
s、 但它只将最后一个读取的元素打印到文件中。
例如:
Engineer e = new Engineer(firstName,surName,weeklySal);
PrintStream writetoEngineer = new PrintStream(new File ("Engineer.txt"));
//This is not append. Only print. Overwrites the file on each item.
writetoEngineer.append(e.toString() + " " + e.calculateMontly(weeklySal));
2条答案
按热度按时间6mzjoqzu1#
我看不出你在哪里关闭文件。我也没看到你在读什么。
我假设您希望附加到文件中,而不是每次都覆盖它。在这种情况下,您需要使用fileoutputstream的append选项,因为这不是默认行为。
顺便说一句:
e.toString() + " "
几乎和e + " "
如果e为null,它不会抛出异常。5ktev3wc2#
由于给定的代码片段不是一个自包含的可编译示例(尽管很简单),我只能猜测printstream是在循环内创建的,每次迭代都是在engineer集合中创建的。这将导致文件被截断,如printstream的构造函数javadoc所示:
参数:
文件-要用作此打印流目标的文件。如果文件存在,那么它将被截断为零大小;否则,将创建一个新文件。输出将写入文件并进行缓冲。
请尝试以下示例代码: