ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream(file) );
时间: 2024-06-04 10:10:16 浏览: 139
这行代码是用于创建一个将 Java 对象序列化并写入文件的 ObjectOutputStream 对象。其中,FileOutputStream 的作用是将数据写入文件,而 ObjectOutputStream 则是将 Java 对象序列化为字节流写入 FileOutputStream 中。这样,我们就可以通过反序列化来重新读取 Java 对象,从而达到数据持久化的目的。需要注意的是,写入对象的类必须实现 Serializable 接口,否则会抛出 NotSerializableException 异常。
相关问题
private void saveList(List<Users> list) { //声明对象流对象 ObjectOutputStream oos = null; try { //创建对象流对象 oos = new ObjectOutputStream(new FileOutputStream("user.bat")); //写对象 oos.writeObject(list); } catch (Exception e) { e.printStackTrace(); } finally { try { oos.close(); } catch (Exception e) { e.printStackTrace(); } } }
这段代码是一个保存用户列表的方法。它使用了对象流来将用户列表写入到文件中。首先,它创建了一个 ObjectOutputStream 对象,将其初始化为将数据写入到名为 "user.bat" 的文件中。然后,它使用 writeObject() 方法将用户列表写入到文件中。如果在这个过程中发生了任何异常,它会打印出异常的堆栈跟踪信息。最后,它在 finally 块中关闭了对象输出流。这样可以确保在方法执行完毕后,资源得到正确释放。
@Test public void TestObjectOutputStream() throws IOException{ String name = "John Smith"; //创建文件输出流对象,将数据写入name.txt FileOutputStream fos=new FileOutputStream("src/test11/name.txt",true); //创建对象输出流输出对象 ObjectOutputStream oos=new ObjectOutputStream(fos); oos.writeObject(name); oos.flush(); oos.close(); }这个代码为什么会多出来一行乱码
这个问题的原因可能是由于你设置了文件输出流的追加模式,即在原有文件内容的基础上继续写入新的内容,导致文件中存在多个序列化对象,而读取时只读取了第一个对象,后面的对象无法正确反序列化,因此会出现乱码。建议将文件输出流的追加模式去掉,或者在读取文件时使用循环读取所有序列化对象。另外,当你在写入对象时,应该在程序结束时关闭文件输出流和对象输出流。
阅读全文