2017-05-24 9 views
1

ArrayListをテキストファイルに保存しようとしています。しかし、それがどのように保存されるかの形式は間違っています。マイコード:ArrayListオブジェクトごとに複数の値を持つArrayListからのテキストファイルへの書き込み

ArrayList<Vehicle> vehs = new ArrayList<Vehicle>(); 

vehs.add(new Vehicle("QJT123", "Starlet 99", 35.0, 190000)); 
vehs.add(new PremiumVehicle("TUX132", "BWM 05 ", 90.0, 12000, 100, 10000, 5000)); 

これら2に使用コンストラクタ:

public PremiumVehicle(String vehicleID, String description, double dailyRate, int odometer, int allowance, int serLength, int lastOdo) //subclass 

public Vehicle(String vehicleID, String description, double dailyRate, int odometer) //Superclass 

これらの両方は、車両のArrayListに格納されます。 VehicleList.txtで

private static void saveFile(ArrayList<Vehicle> vehs){ 
    File fileName = new File("VehicleList.txt");   

    try { 
     FileWriter fw = new FileWriter(fileName); 
     Writer output = new BufferedWriter(fw); 

     for (int i = 0; i < vehs.size(); i++){ 
      output.write(vehs.get(i).toString() + "\n"); 
     } 

     output.close(); 

    } catch (Exception e) { 
     JOptionPane.showMessageDialog(null, "I cannot create that file"); 
    } 
} 

マイ出力:

vehicle ID = QJT123 Description = Starlet 99 Status = A Daily Rate = 35.0 Odometer reading = 190000vehicle ID = TUX132 Description = BWM 05 Status = A Daily Rate = 90.0 Odometer reading = 12000 Mileage allowance = 100 service length = 10000 Last Service = 5000 

がどのように私は例えば、それは、このような新しいArrayListオブジェクトに書き込む際に、それぞれの新しい行が追加されていることを確認します:テキストファイルに保存するためのコード

vehicle ID = QJT123 Description = Starlet 99 Status = A Daily Rate = 35.0 Odometer reading = 190000 
vehicle ID = TUX132 Description = BWM 05 Status = A Daily Rate = 90.0 Odometer reading = 12000 Mileage allowance = 100 service length = 10000 Last Service = 5000 

私はvehs.get(i).toString() + "\n"を試しましたが、うまくいかないようです。

+0

あなたの2つのオブジェクトは同じ行に書き込まれていますか? –

+0

@ΦXocę笑ПEPeúpaツはい、私のテキストファイルでは、すべて1行で書かれています。車両ID –

+0

が意味をなさない前に、新しい行が追加されると仮定します。いくつかのコードでテストされ、それは完璧にうまく動作します – XtremeBaumer

答えて

1

BufferedWriteroutputBufferedWriterと宣言した場合に使用することができます。方法のJavadocのためのまた

private static void saveFile(ArrayList<Vehicle> vehs){ 
    File fileName = new File("VehicleList.txt"); 


    try { 
     FileWriter fw = new FileWriter(fileName); 
     BufferedWriter output = new BufferedWriter(fw); 

     for (int i = 0; i < vehs.size(); i++){ 
      output.write(vehs.get(i).toString()); 
      output.newLine(); 
     } 

     output.close(); 

    } catch (Exception e) { 
     JOptionPane.showMessageDialog(null, "I cannot create that file"); 
    } 
} 

は、行区切りを書き込み。行区切り文字列は システムプロパティline.separatorによって定義され、必ずしも単一の 改行( '\ n')文字である必要はありません。

+0

'\ n'は彼のコードで動作するはずです。少なくともそれは私にとって役に立ちます – XtremeBaumer

+0

プラットフォームに依存します。 – Berger

+0

@Bergerありがとう!それは素晴らしい作品です。 –

2

ほとんどの場合、ご使用のプラットフォームでは改行文字として\ nが表示されません。これはOSによって異なります。

String lineSep = System.getProperty("line.separator"); 

またはさらに簡単:正しい改行マーカーを得るために

一つの方法

String lineSep = System.lineSeparator(); 

、代わりの+ "\n"を使用して、あなたのコード内で+ lineSepを行います。

+0

またはそれ以上*** System.lineSeparator()*** –

関連する問題