-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 に答える