这是我的代码:
public boolean readFromFileBooking()
{
boolean isFileBooking = true;
try
{
BufferedReader reader = new BufferedReader(new FileReader("bookings.txt"));
String data = reader.readLine();
if (data == null)
{
System.out.println("No Bookings Have Been Made . . . .");
}
data = reader.readLine();
reader.close();
}
以下是序列:
问题是每当我启动一个新系统时,文本文件都会被新数组覆盖。实际上我希望新数组成为ArrayList
中的新列表。
你能和我分享一下如何在新系统中加载以前的数据吗?如何在文本文件中加载/复制以前的数据?
答案 0 :(得分:1)
请勿尝试同时从文件中读取和写入。
启动时,读取文件,如果文件完成,则关闭文件。
关闭时,写入文件并在完成后关闭它。
如果您尝试读取和写入文件(不附加),您将截断该文件,并且无需阅读。
答案 1 :(得分:1)
这会将一个整数数组写入一个文件中,每个数字用空格分隔。然后它会将它们读回来并将它们存储为arraylist。我忽略了异常处理以专注于IO。
public static void main(String[] args) {
int[] array = { 1, 2, 3 };
writeOut(array);
List<Integer> list = readIn();
for (Integer num : list) {
System.out.print(num + " " );
}
}
public static List<Integer> readIn() {
final File file = new File("file.txt");
List<Integer> list = new ArrayList<Integer>();
Scanner scan;
try {
scan = new Scanner(file);
while (scan.hasNextInt()) {
list.add(scan.nextInt());
}
} catch (FileNotFoundException e) {
}
return list;
}
public static void writeOut(int[] array) {
final File file = new File("file.txt");
try {
file.createNewFile();
final FileWriter writer = new FileWriter(file);
for (int i = 0; i < array.length; i++) {
writer.write(Integer.toString(array[i]) + " ");
}
writer.close();
writer.flush();
} catch (final IOException e) {
}
}