如何读取文本文件中的多个对象。我正在尝试阅读文本文件。我总是只得到文件的第一个对象。如何从文本文件中获取所有对象...
List<Processedfile> processfiles = new ArrayList<Processedfile>();
Processedfile processfile = new Processedfile();
processfile.setFilename(filename);
processfile.setCountrow(uploadedFileCount);
processfile.setDate(dateformat);
processfiles.add(processfile);
writeReportTextFile(processfiles);
将已处理的文件对象写入文本文件...
写文件
public void writeReportTextFile(List<Processedfile> processfiles) {
String processedfilereport = "D:\\PaymentGatewayFiles\\MSSConsolidate\\processedfilereport.txt";
try {
File file = new File(processedfilereport);
FileOutputStream f = new FileOutputStream(file.getAbsoluteFile(), true);
// System.out.println(file);
ObjectOutputStream s = new ObjectOutputStream(f);
// System.out.println("the write"+reportfile);
s.writeObject(processfiles);
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
阅读文件..
public List<Processedfile> processreportfileread() {
List<Processedfile> a1 = new ArrayList();
String processedfilereport = "D:\\PaymentGatewayFiles\\MSSConsolidate\\processedfilereport.txt";
try {
File file = new File(processedfilereport);
FileInputStream r = new FileInputStream(file);
ObjectInputStream sp = new ObjectInputStream(r);
a1 = (List) sp.readObject();
System.out.println("the list is" +a1);
Iterator i = a1.iterator();
while(i.hasNext()) {
System.out.println("the iterator report is ===="+i.next());
}
}
catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
return a1;
}
答案 0 :(得分:0)
对象序列化协议/ API可以处理包含单个对象或一系列对象的流。但无法处理流 1 的串联...这是您的应用程序似乎通过打开输出文件来创建的&#34;追加&#34;模式)
解决方案是不要像那样写它们。这样:
FileOutputStream f = new FileOutputStream(file.getAbsoluteFile(), true);
从根本上说是错误的。它导致多个对象流被连接。无法阅读。
正确的方法是:
Processedfile
调用编写列表...或writeObject
次调用将writeObject
个对象写入单个Processedfile
或1 - 要了解原因,您需要阅读对象序列化规范,特别是您需要了解序列化协议/格式。