我正在尝试将对象读取和写入文件。将输出读取到新对象中是可行的,但是每个值都为null。
代码如下:
public void read() throws Exception
{
try
{
FileInputStream fIn = new FileInputStream(file);
ObjectInputStream in = new ObjectInputStream(fIn);
Object obj = in.readObject();
System.out.println(obj);
public void save() throws Exception
{
FileOutputStream fOut = new FileOutputStream(file.toString());
ObjectOutputStream out = new ObjectOutputStream(fOut);
out.writeObject(this);
out.flush();
out.close();
}
这是文件输出:(image of output)
我想在创建的新对象中接收以前写入文件的值,但是对于所有值我得到的都是空。
编辑:由于人们要求整个类,而且我也不知道什么代码可能引起什么,所以这里是整个UserFile类:https://pastebin.com/Gr1tcGsg
答案 0 :(得分:0)
我已经运行了该代码,它可以正常工作,这意味着您最有可能在编写之前先进行阅读,或者遇到InvalidClassException: no valid constructor
之类的异常,这对您而言很有意义。
我运行的代码:
public class SavedObject implements Serializable
{
public static void main(String[] args) throws IOException, ClassNotFoundException
{
new SavedObject();
}
private final int random;
private SavedObject() throws IOException, ClassNotFoundException
{
random = ThreadLocalRandom.current().nextInt();
File file = new File("Object.txt");
save(file);
read(file);
}
private void save(File file) throws IOException
{
FileOutputStream fileOutput = new FileOutputStream(file);
ObjectOutputStream objectOutput = new ObjectOutputStream(fileOutput);
objectOutput.writeObject(this);
objectOutput.close();
fileOutput.close();
System.out.println(this);
}
private void read(File file) throws IOException, ClassNotFoundException
{
FileInputStream fileInput = new FileInputStream(file);
ObjectInputStream objectInput = new ObjectInputStream(fileInput);
Object obj = objectInput.readObject();
System.out.println(obj);
objectInput.close();
fileInput.close();
}
public String toString()
{
return "SavedObject(Random: " + random + ")";
}
}
哪些印刷品:
SavedObject(Random: -2145716528)
SavedObject(Random: -2145716528)
还有一些提示给您:
throws
throws
“ Exception”,而应使用throws
“ 答案 1 :(得分:0)
我发现了问题,原因是在我的构造函数中,我没有正确应用从文件中检索到的信息。谢谢大家的帮助。