Java语言中的数据流与对象流在程序设计中占据了重要位置,它们承担着将Java程序中的数据和对象序列化为字节流的任务。下面我们来看一些具体例子:
数据流的例子:
try (DataOutputStream out = new DataOutputStream(new FileOutputStream("data.txt"))) { // 写入一个整型数据 out.writeInt(123); // 写入一个浮点型数据 out.writeDouble(3.14); // 写入一个字符串 out.writeUTF("hello world"); } catch (IOException e) { e.printStackTrace(); }
对象流的例子:
Person p = new Person("Alice", 25, "Female"); try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("person.ser"))) { // 序列化一个Person对象 out.writeObject(p); } catch (IOException e) { e.printStackTrace(); } try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("person.ser"))) { // 从文件中反序列化出一个Person对象 Person p2 = (Person) in.readObject(); System.out.println(p2); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); }
以上代码中,数据流的例子使用了DataOutputStream类,通过writeInt、writeDouble、writeUTF等方法将数据写入输出流中,最终输出到data.txt文件中。这个文件中的数据虽然不可读,但却可以被其他程序读取并还原出原有的Java对象。
对象流的例子则使用了ObjectOutputStream和ObjectInputStream类,将一个Person对象序列化为一个.ser文件,再从该文件中反序列化出一个Person对象并输出其属性信息。通过对象流,Java程序中的对象可以以二进制数据的形式被序列化并写入到文件或流中,以备后续读取和使用。