从每个 ArrayList 对象具有多个值的 ArrayList 写入文本文件 (java)
Writing into text file from ArrayList that has multiple values per ArrayList object (java)
我正在尝试将 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
这两个都存储在 Vehicle 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"
但它似乎不起作用。
BufferedWriter 有一个 newLine()
方法,如果你将 output
声明为 BufferedWriter
,你可以使用它。
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 :
Writes a line separator. The line separator string is defined by the
system property line.separator, and is not necessarily a single
newline ('\n') character.
很可能,您的平台不会将 \n 视为换行符 - 这取决于 OS。
获取正确换行符的一种方法:
String lineSep = System.getProperty("line.separator");
或更简单:
String lineSep = System.lineSeparator();
而不是使用 + "\n"
,而是在代码中使用 + lineSep
。
我正在尝试将 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
这两个都存储在 Vehicle 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"
但它似乎不起作用。
BufferedWriter 有一个 newLine()
方法,如果你将 output
声明为 BufferedWriter
,你可以使用它。
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 :
Writes a line separator. The line separator string is defined by the system property line.separator, and is not necessarily a single newline ('\n') character.
很可能,您的平台不会将 \n 视为换行符 - 这取决于 OS。
获取正确换行符的一种方法:
String lineSep = System.getProperty("line.separator");
或更简单:
String lineSep = System.lineSeparator();
而不是使用 + "\n"
,而是在代码中使用 + lineSep
。