为什么没有将ArrayList写入“MyCalendar.txt”?即使我使用out.write(),它仍然返回false但不写入文件。
import java.util.*;
import java.io.*;
public static Boolean addAppointment(ArrayList<String> calendar,
String specifiedDay,
String specifiedTime) {
PrintWriter out = new PrintWriter("myCalendar.txt"); //declare calendar file
for (int i = 0; i<calendar.size(); i++) {
String index = calendar.get(i);
if (index.equals(specifiedDay + "" + specifiedTime))
{
out.println(specifiedDay + "" + specifiedTime);
return false;
}
}
return true;
}
答案 0 :(得分:0)
你忘了关闭它:
out.close()
答案 1 :(得分:0)
低于2对于将数据刷新到文件并关闭流
非常重要out.flush();
out.close();
此致
答案 2 :(得分:0)
所以,这里有几件事。
如果您使用的是Java 7,则应考虑使用try-with-resources。这绝对可以确保您的PrintWriter
在完成后关闭。
try (PrintWriter out = new PrintWriter("somefile.txt")) {
// code
} catch (FileNotFoundException e) {
System.out.println("Bang!");
}
接下来,在某些情况下无法将文件部分或全部写入:
calendar.size() == 0
index.equals(specifiedDay + "" + specifiedTime)
如果满足第一个条件,则不会写入任何内容,并且该方法会愉快地返回true
。可能不是你所期望的。
如果满足第二个条件,则编写第一个元素,并提前返回。将它置于循环条件中可能是一个更好的主意,并在循环完成后返回返回值。
int i = 0;
boolean good = true;
while(good && i < calendar.size()) {
// critical actions
String index = calendar.get(i);
if(index.equals(specifiedDay + "" + specifiedTime)) {
good = false;
}
}
// other code
return good;
如果从未满足该条件,那么永远不会写入该文件。
答案 3 :(得分:0)
PrintWriter的默认行为不是自动刷新缓冲区。有关详细信息,请参阅PrintWriter Documentation。
或者,您可能遇到数据问题:
String index = calendar.get(i);
if (index.equals(specifiedDay + "" + specifiedTime))
如果不满足此条件,则不会打印任何内容。你确定这个条件是真的吗?