Java 为什么我的ArrayList没有保存到我的文件中?
为什么ArrayList没有写入“MyCalendar.txt”?即使使用out.write(),它仍然返回false,但不会写入文件Java 为什么我的ArrayList没有保存到我的文件中?,java,arraylist,printwriter,Java,Arraylist,Printwriter,为什么ArrayList没有写入“MyCalendar.txt”?即使使用out.write(),它仍然返回false,但不会写入文件 import java.util.*; import java.io.*; public static Boolean addAppointment(ArrayList<String> calendar, String specifiedDay, Stri
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;
}
import java.util.*;
导入java.io.*;
公共静态布尔添加约会(ArrayList日历,
字符串指定日期,
字符串指定时间){
PrintWriter out=new PrintWriter(“myCalendar.txt”);//声明日历文件
对于(int i=0;i您忘记关闭它:
out.close()
下面2条对于将数据刷新到文件并关闭流很重要
out.flush();
out.close();
关于,这里有几件事
如果你使用java 7,你应该考虑使用。这绝对可以确保你的代码>打印机WT/ID>在你完成之后关闭。
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;
inti=0;
布尔好=真;
while(good&&i
如果从未满足该条件,则不会向文件写入任何内容。PrintWriter的默认行为是不会自动刷新缓冲区。有关详细信息,请参阅
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;
}
或者,您可能会遇到数据问题:
String index = calendar.get(i);
if (index.equals(specifiedDay + "" + specifiedTime))
如果不满足此条件,您将不会打印任何内容。是否确保此条件为真?您可能还需要out.flush()
关闭之前。@Joe,关闭会在关闭流之前自动将内容刷新到文件中。因此刷新是可选的。关闭流将自动刷新流。谢谢!我们从未在课堂上被教过刷新数据,但这显然是我需要做的。此外,我还使用了out.write(specifiedDay+specifiedTime+'\n')将其保存在文件中。如果使用out.println,则不需要\n。因为println表示打印行并终止。但是如果使用out.write()然后,您需要使用\n写入行并终止。因此,下一次写入将从新行开始。关于这一点,您应该有PrintWriter out=new PrintWriter(“myCalendar.txt”);
周围有try
/catch
。