亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java ObjectOutputStream 类

Java ObjectOutputStream 类

在本教程中,我们将通过示例了解 Java ObjectOutputStream 及其方法。

ObjectOutputStream java.io 的类 包可以用来写ObjectInputStream可以读取的对象 .

它扩展了 OutputStream 抽象类。


ObjectOutputStream 的工作

基本上,ObjectOutputStream 使用类名和对象值对 Java 对象进行编码。并且,因此生成相应的流。这个过程称为序列化。

这些转换后的流可以存储在文件中,并且可以在网络之间传输。

注意 :ObjectOutputStream 类只写那些实现 Serializable 的对象 界面。这是因为对象在写入流时需要序列化


创建一个 ObjectOutputStream

为了创建对象输出流,我们必须导入 java.io.ObjectOutputStream 先打包。导入包后,我们可以通过以下方式创建输出流。

// Creates a FileOutputStream where objects from ObjectOutputStream are written
FileOutputStream fileStream = new FileOutputStream(String file);

// Creates the ObjectOutputStream
ObjectOutputStream objStream = new ObjectOutputStream(fileStream);

在上面的例子中,我们创建了一个名为 objStream 的对象输出流 与名为 fileStream 的文件输出流链接 .


ObjectOutputStream的方法

ObjectOutputStream 类为 OutputStream 中存在的不同方法提供实现 类。

write() 方法


示例 1:Java ObjectOutputStream

让我们看看如何使用 ObjectOutputStream 将对象存储在文件和 ObjectInputStream 从文件中读取这些对象

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

class Main {
    public static void main(String[] args) {

        int data1 = 5;
        String data2 = "This is programiz";

        try {

            FileOutputStream file = new FileOutputStream("file.txt");

            // Creates an ObjectOutputStream
            ObjectOutputStream output = new ObjectOutputStream(file);

            // writes objects to output stream
            output.writeInt(data1);
            output.writeObject(data2);

            // Reads data using the ObjectInputStream
            FileInputStream fileStream = new FileInputStream("file.txt");
            ObjectInputStream objStream = new ObjectInputStream(fileStream);

            System.out.println("Integer data :" + objStream.readInt());
            System.out.println("String data: " + objStream.readObject());

            output.close();
            objStream.close();
        }

        catch (Exception e) {
            e.getStackTrace();
        }
    }
}

输出

Integer data: 5
String data: This is programiz

在上面的例子中,我们使用了 readInt() 方法和readObject() 从文件中读取整数数据和对象数据的方法。

在这里,我们使用了 ObjectOutputStream 将数据写入文件。然后我们使用 ObjectInputStream 从文件中读取数据 .


示例 2:Java ObjectOutputStream

再举一个例子,

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

class Dog implements Serializable {

    String name;
    String breed;

    public Dog(String name, String breed) {
        this.name = name;
        this.breed = breed;
    }
}

class Main {
    public static void main(String[] args) {

        // Creates an object of Dog class
        Dog dog1 = new Dog("Tyson", "Labrador");

        try {
            FileOutputStream fileOut = new FileOutputStream("file.txt");

            // Creates an ObjectOutputStream
            ObjectOutputStream objOut = new ObjectOutputStream(fileOut);

            // Writes objects to the output stream
            objOut.writeObject(dog1);

            // Reads the object
            FileInputStream fileIn = new FileInputStream("file.txt");
            ObjectInputStream objIn = new ObjectInputStream(fileIn);

            // Reads the objects
            Dog newDog = (Dog) objIn.readObject();

            System.out.println("Dog Name: " + newDog.name);
            System.out.println("Dog Breed: " + newDog.breed);

            objOut.close();
            objIn.close();
        }

        catch (Exception e) {
            e.getStackTrace();
        }
    }
}

输出

Dog Name: Tyson
Dog Breed: Labrador

在上面的例子中,我们创建了

在这里,我们然后使用对象输出流将对象写入文件。并且,对象输入流从文件中读取对象。

注意 : 类实现 Serializable 界面。这是因为 ObjectOutputStream 只将可序列化的对象写入输出流。


ObjectOutputStream的其他方法

方法 说明
flush() 清除输出流中的所有数据
drain() 将所有缓冲的数据放入输出流中
close() 关闭输出流

要了解更多信息,请访问 Java ObjectOutputStream(Java 官方文档)。


java

  1. Java final 关键字
  2. Java instanceof 运算符
  3. Java 继承
  4. Java 嵌套静态类
  5. Java 匿名类
  6. Java 单例类
  7. Java 反射
  8. Java ArrayList 类
  9. Java 堆栈类
  10. Java HashSet 类
  11. Java 泛型
  12. Java 文件类