[英]How to read from text file into array of Objects
因此,我查看了幾個解決方案,但沒有一個對我有用。 感謝某些人,我最終獲得了無限循環,但對我來說仍然無效。 我想將文件“ output.txt”讀入對象列表。 所以我提供了剩余的代碼,因為我認為它們根本無法提供幫助。
try {
List<House> listH = new ArrayList<>();
boolean cont = true;
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("output.txt"));
while(cont)
{
House house = (House) ois.readObject();
if(house != null)
listH.add(house);
else
cont = false;
}
ois.close();
mainmenu();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
編寫代碼:
try {
FileWriter writer = new FileWriter("output.txt");
for(House str : listH)
{
writer.write(String.valueOf(str) + "\n");
}
writer.close();
System.out.println("Successful writing");
} catch (IOException e) {
e.printStackTrace();
System.out.println("Couldn't write");
}
房屋對象:
public class House {
String address;
double area;
boolean garage;
public House(String address, double area, boolean garage){
this.address=address;
this.area = area;
this.garage = garage;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public double getArea() {
return area;
}
public void setArea(double area) {
this.area = area;
}
public boolean isGarage() {
return garage;
}
public void setGarage(boolean garage) {
this.garage = garage;
}
@Override
public String toString() {
return address + ";" + area + ";" + garage;
}
}
錯誤消息如下:
java.io.StreamCorruptedException:無效的流標頭:java.io.ObjectInputStream。(ObjectInputStream.java:358)上的java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:866)處為3134313B
您有三個主要問題:
hasnext
在while條件和readline
使用hasnext
從字符串值``手動''構造一個house對象。 這里:
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("output.txt"));
本身就是一個矛盾。 您會看到,當通過標准Java機制序列化 Java對象時,最終會得到bytes 。 二進制數據。
從而:
該例外意味着第二種情況更有可能發生。
換句話說:驗證該“ output.txt”文件中的真正內容。 顯然,這不是序列化Java對象的結果。
(注意:當然,文件擴展名無關緊要,但這意味着文件確實與您期望的有所不同)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.