将以前的数据从文本文件加载到新系统中

时间:2012-05-18 11:37:41

标签: java arrays collections arraylist

这是我的代码:

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. 在重新启动时加载文本文件中的上一个数组,以便可以再次使用它。
  4. 问题是每当我启动一个新系统时,文本文件都会被新数组覆盖。实际上我希望新数组成为ArrayList中的新列表。

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

2 个答案:

答案 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) {
    }
}