-4

这是我的代码:

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();            
}

这是顺序:

  1. 将数组写入文本文件
  2. 停止/退出系统
  3. 重新启动时,在文本文件中加载前一个数组,以便再次使用它。

问题是每当我启动一个新系统时,文本文件都会被一个新数组覆盖。实际上我希望新数组成为ArrayList.

你们能分享给我如何在新系统中加载以前的数据吗?如何加载/复制文本文件中的先前数据?

4

2 回答 2

1

不要尝试同时读取和写入文件。

在启动时,如果文件在那里,则读取文件,完成后将其关闭。

关机时,写入文件并在完成后关闭它。

如果您尝试读取和写入文件(不附加),您将截断文件并且将没有可读取的内容。

于 2012-05-18T11:42:20.160 回答
1

这会将整数数组写入文件,每个数字用空格分隔。然后它将它们读回并将它们存储为数组列表。我忽略了异常处理以专注于 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) {
    }
}
于 2012-05-18T11:53:09.707 回答