簡體   English   中英

使用 Java 從 a.dat 文件中讀取對象

[英]Reading objects from a .dat file using Java

我在 a.dat 文件中有 3 個 Fraction 類型的對象,我正在嘗試使用 Java 讀取 .dat 文件的內容。

使用下面的代碼塊,我不斷得到:

Exception in thread "main" java.lang.ClassCastException: class Fraction cannot be cast to class [LFraction; (Fraction and [LFraction; are in unnamed module of loader 'app')
    at Mod8Problem1.main(Mod8Problem1.java:26)

我已經嘗試了一些事情,但我一直遇到同樣的異常。 解決此問題的最佳方法是什么?

try(
        ObjectInputStream input = new ObjectInputStream(new FileInputStream("SerialF.dat"))
) {
    Fraction[] updatedFractions = (Fraction[]) (input.readObject());

    for (int i = 0; i < updatedFractions.length; i++) {
        System.out.println(updatedFractions[i]);
    }
}      

你的問題在這里:

Fraction[] updatedFractions = (Fraction[]) (input.readObject());

input.readObject()返回Fraction ,但您試圖將其強制轉換為Fraction[] ,這不是兼容的類型。 不過,您可以將多個Fraction讀入一個數組以獲得相同的結果。 您可以使用ArrayList來執行此操作,如下所示:

ArrayList<Fraction> fractions = new ArrayList<>();

try (
    ObjectInputStream input = new ObjectInputStream(new FileInputStream("SerialF.dat"))
) {
    while (input.available() > 0) {
        fractions.add((Fraction) input.readObject);
        
    }
}

Fraction[] updatedFractions = fractions.toArray(new Fraction[0]);

for (Fraction fraction : updatedFractions) {
    System.out.println(fraction);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM