【发布时间】:2013-11-09 14:21:12
【问题描述】:
我用 ObjectOutputStream 写了一个对象,用 ObjectInputStream 读取它,并测试它,我得到了预期的结果。但是当在其他机器上写入对象时,在我的计算机中读取它,读取对象的成员是空的。有人可以帮助我吗?谢谢
public class TrustNet implements Serializable{
public double[][] trusts;
public double avg = 0;
public TrustNet(int size){
trusts = new double[size][size];
}
public void writeToFile(String fileName){
try(ObjectOutputStream writer = new ObjectOutputStream(new FileOutputStream(fileName))){
writer.writeObject(this);
writer.flush();
} catch (IOException ex) {
ex.printStackTrace();
}
}
public static TrustNet readFromFile(String fileName){
try(ObjectInputStream writer = new ObjectInputStream(new FileInputStream(fileName))){
return (TrustNet) writer.readObject();
} catch (IOException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
return null;
}
}
【问题讨论】:
-
分享你写到现在的代码
-
the read object's members are empty,你是什么意思?它返回null? -
@cstur4 不要在 cmets 中发布代码。你可以亲眼看到它难以辨认。将其编辑到您的帖子中。还请显示读写代码,并说明您是如何传输文件的。
-
谢谢 :) 空对象意味着它的字段是默认值而不是我保存的值。我只是在服务器中运行 writeToFile 函数,然后将文件复制到我的本地计算机,我运行 readFromFile 函数来获取 TurstNet,但这些字段是默认值。当写入和读取都在我的本地机器上时,它就可以正常工作。
-
我也有同样的问题。在所有字段中仅使用默认值返回反序列化对象的原因可能是什么?就我而言,它适用于一个 Android 应用程序版本,但是当用户更新到应用程序的下一个版本时会出现问题。存储在内部存储中的文件无法正常读取。
标签: java objectinputstream objectoutputstream