Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将类对象写入bin文件_Java_File Io_Inputstream_Outputstream_Serializable - Fatal编程技术网

Java 如何将类对象写入bin文件

Java 如何将类对象写入bin文件,java,file-io,inputstream,outputstream,serializable,Java,File Io,Inputstream,Outputstream,Serializable,我正在使用java映射一些大型图形。我有一个具有此映射的个性化类对象,它由几个hasmaps组成,并调用其他也由varios对象组成的个性化类。 我的问题是,每次我运行这个程序进行测试时,需要大约5分钟来映射所有内容,然后对于每个节点,可能需要1到10分钟来进行一些计算。每次我要修改代码时,我都要经历等待时间。所以我的问题是 有没有办法将主对象类(由几个基本对象和非基本对象组成)存储为二进制文件,我可以保存一次,然后再读取解析将如何进行? 我开始研究FileOutputStream/Object


我正在使用java映射一些大型图形。我有一个具有此映射的个性化类对象,它由几个hasmaps组成,并调用其他也由varios对象组成的个性化类。

我的问题是,每次我运行这个程序进行测试时,需要大约5分钟来映射所有内容,然后对于每个节点,可能需要1到10分钟来进行一些计算。每次我要修改代码时,我都要经历等待时间。
所以我的问题是

有没有办法将主对象类(由几个基本对象和非基本对象组成)存储为二进制文件,我可以保存一次,然后再读取

解析将如何进行?

我开始研究FileOutputStream/ObjectOutputStream和FileInputStream/ObjectInputStream,但我不确定我是否正确理解它们是否适合这种情况。

如有任何意见和建议,将不胜感激

更新:我附加了我试图用来保存类对象的代码

FileOutputStream fos = new FileOutputStream("tbox.dat");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(tboxObject);
oos.flush();
oos.close();
这是第一次运行,之后我将代码交换为:

FileInputStream fis = new FileInputStream("tbox.dat");
ObjectInputStream ois = new ObjectInputStream(fis);
tboxObject savedTboxObject = (tboxObject) ois.readObject();
我要补充的是,这些对象不仅由int和string组成,还由hashmap、列表和其他复杂对象的数组组成。

来自:


只需确保图形中的所有对象都实现可序列化。

可能就是您想要的。在类中实现可序列化接口,然后使用ObjectOutputStream将对象写入文件。

是的,可以使用OutputStream/InputStream类序列化和保存对象。但是,当您修改类(例如添加/删除/修改实例变量)然后尝试读取以前保存的文件时,请务必小心。

您好,我已经尝试过这种方法。我在“MyObject”类中存在的所有对象中实现了serializable,然后我尝试用它来读取它<代码>文件输入流fis=新文件输入流(“myFile.dat”);ObjectInputStream ois=新ObjectInputStream(fis);MyObject mo=(MyObject)ois.readObject()这会导致EOF异常。作为补充说明,保存的文件大小为1kb,我希望至少有4MB或5MB。这是很多信息。一定是你的对象图有问题,如果没有一些代码,很难判断。嗨,奥尔德林,该文件只会在第一次运行时读取。在每次修改之后,我都应该被保存,这样程序就会停止并再次启动。在这种情况下,将其保存在文件中就足够了。张贴你的代码,以防你无法使用。@joel_gil:你的代码看起来不错。你有什么问题吗?@paulo:问题是,第一次运行后,我得到的文件大小是1kb,而我不希望在兆字节范围内有任何东西。所以当我试图阅读它时,我得到一个EOF异常=S@joel_gil:您有没有尝试..了解忽略异常的代码?你能打印出任何捕获到的异常吗?嗯,代码看起来不错。很难说问题出在哪里。您是否接受catch块中的任何异常?
    FileOutputStream fos = new FileOutputStream("t.tmp");
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    oos.writeObject(yourObject);
    oos.close();