[英]How to write objects in a file using arraylist
我想使用 arraylist 在文件中写入对象,我应该添加什么来显示我的文件?
package my.issues.issue15;
import java.io.*;
import java.util.ArrayList;
public class WriteObjects {
public static void main(String[] args) throws IOException {
Result r1 = new Result("101","science","3","A");
Result r2 = new Result("102"," Nationhood Studies","3","B+");
Result r3 = new Result("103","Math","3","A-");
ArrayList<Result> resultList = new ArrayList<>();
resultList.add(r1);
resultList.add(r2);
resultList.add(r3);
System.out.println(resultList);
FileOutputStream fos = new FileOutputStream("Course.ser");
ObjectOutputStream oos =new ObjectOutputStream(fos);
oos.writeObject(resultList);
System.out.println("Finish");
oos.close();
fos.close();
}
}
如果我使用缓冲区写入器,它会显示错误。 我应该添加什么以便我的文件能够显示?
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(new File("Results.txt"), true));
writer.write(resultList);
writer.newLine();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
错误
Error:(21, 19) java: no suitable method found for write(java.util.ArrayList<my.issues.issue15.Result>)
method java.io.Writer.write(char[]) is not applicable
(argument mismatch; java.util.ArrayList<my.issues.issue15.Result> cannot be converted to char[])
method java.io.Writer.write(java.lang.String) is not applicable
(argument mismatch; java.util.ArrayList<my.issues.issue15.Result> cannot be converted to java.lang.String)
method java.io.BufferedWriter.write(int) is not applicable
(argument mismatch; java.util.ArrayList<my.issues.issue15.Result> cannot be converted to int)
以下是我的结果 class 的详细信息。 我想弄清楚我应该添加什么以便创建文件
import java.io.Serializable;
public class Result implements Serializable {
private String courseCode;
private String courseName;
private String creditHours;
private String grade;
public Result(String courseCode, String courseName, String creditHours, String grade) {
this.courseCode = courseCode;
this.courseName = courseName;
this.creditHours = creditHours;
this.grade = grade;
}
public String toString(){
return "< " + courseCode + " | " + courseName + " | " + "Credit Hours: " + creditHours + " | " + "Grade: " +grade + " >";
}
}
您正在尝试调用write(...)
,它需要一个 char 数组、一个 String 或一个 Integer 作为参数(错误消息从字面上告诉您“ ArrayList<...> cannot be converted to char[]/String/int
)。
由于我不知道您的Result
class 看起来如何,我无法为您编写代码,但基本上您需要从每个 Result object 中获取值并将它们一个一个写入文件或使用StringBuilder
构建您要编写的完整字符串。
它可能看起来像这样:
StringBuilder sb = new StringBuilder();
for(Result result : resultList)
{
String[] resultData = result.getValues(); // getValues() is whatever getters you use in result class
for(String substring : resultData)
{
sb.append(substring)
}
}
然后您可以在 StringBuilder 实例上调用toString()
并将其写入您的文件。
没关系,它比这更简单,您只需在 ArrayList 上调用toString()
。
完整的 class:
import java.io.*;
import java.util.ArrayList;
public class WriteObjects
{
public static void main(String[] args)
{
Result r1 = new Result("101", "science", "3", "A");
Result r2 = new Result("102", " Nationhood Studies", "3", "B+");
Result r3 = new Result("103", "Math", "3", "A-");
ArrayList<Result> resultList = new ArrayList<>();
resultList.add(r1);
resultList.add(r2);
resultList.add(r3);
System.out.println(resultList);
try
{
File file = new File("Results.txt");
BufferedWriter writer = new BufferedWriter(new FileWriter(file, true));
writer.write(resultList.toString());
writer.newLine();
writer.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.