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

Java ObjectInputStream 类

Java ObjectInputStream 类

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

ObjectInputStream java.io 的类 包可用于读取之前由 ObjectOutputStream 编写的对象 .

它扩展了 InputStream 抽象类。

在了解 ObjectInputStream 之前 类,请确保您了解 ObjectOutputStream 类。


ObjectInputStream 的工作

ObjectInputStream 主要用于读取ObjectOutputStream写入的数据 .

基本上,ObjectOutputStream 将 Java 对象转换为相应的流。这称为序列化。这些转换后的流可以存储在文件中,也可以通过网络传输。

现在,如果我们需要读取这些对象,我们将使用 ObjectInputStream 这会将流转换回相应的对象。这称为反序列化。


创建一个 ObjectInputStream

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

// Creates a file input stream linked with the specified file
FileInputStream fileStream = new FileInputStream(String file);

// Creates an object input stream using the file input stream
ObjectInputStream objStream = new ObjectInputStream(fileStream);

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

现在,objStream 可用于从文件中读取对象。


ObjectInputStream的方法

ObjectInputStream 类提供了 InputStream 中不同方法的实现 类。

read() 方法


示例1:Java ObjectInputStream

让我们看看如何使用 ObjectInputStream 读取由 ObjectOutputStream 编写的对象的类 类。

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");
            ObjectOutputStream output = new ObjectOutputStream(file);

            // Writing to the file using ObjectOutputStream
            output.writeInt(data1);
            output.writeObject(data2);

            FileInputStream fileStream = new FileInputStream("file.txt");
            // Creating an object input stream
            ObjectInputStream objStream = new ObjectInputStream(fileStream);

            //Using the readInt() method
            System.out.println("Integer data :" + objStream.readInt());

            // Using the readObject() method
            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 ObjectInputStream

再看一个实际的例子,

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 dog = new Dog("Tyson", "Labrador");

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

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

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

            FileInputStream fileStream = new FileInputStream("file.txt");

            // Creates an ObjectInputStream
            ObjectInputStream input = new ObjectInputStream(fileStream);

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

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

            output.close();
            input.close();
        }

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

输出

Dog Name: Tyson
Dog Breed: Labrador

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

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

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


ObjectInputStream的其他方法

方法 说明
available() 返回输入流中可用的字节数
mark() 标记输入流中已读取数据的位置
reset() 将控件返回到输入流中设置标记的点
skipBytes() 从输入流中跳过并丢弃指定的字节
close() 关闭对象输入流

要了解更多信息,请访问 Java ObjectInputStream(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 ObjectOutputStream 类
  11. Java 泛型
  12. Java 文件类