2017-05-24 66 views
1

我想将我的ArrayList保存到文本文件中。但是如何保存的格式是错误的。我的代码:从ArrayList写入每个ArrayList对象具有多个值的文本文件(java)

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。代码保存到文本文件:

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

我在VehicleList.txt输出:

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ツ是的,在我的文本文件中,它全部写在一行中。假设在车辆ID –

+0

没有任何意义之前添加新线路。用一些代码测试,它工作得很好 – XtremeBaumer

回答

1

BufferedWriter有一个newLine()方法,你可以使用,如果你声明outputBufferedWriter

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

同样对于所述方法的的Javadoc:

写入一个行分离器。行分隔符字符串由 系统属性line.separator定义,并不一定是单个 换行符('\ n')字符。

+0

'\ n'应该在他的代码中工作。至少它对我来说是 – XtremeBaumer

+0

它依赖于平台。 – Berger

+0

@Berger谢谢!这很好。 –

2

很可能,您的平台不会将\ n视为换行符 - 该操作取决于操作系统。以获得正确的换行符标记

方式一:

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

或更简单:

String lineSep = System.lineSeparator(); 

和而不是使用+ "\n"你在你的代码做+ lineSep

+0

甚至更​​好*** System.lineSeparator()*** –

相关问题