В этом руководстве мы узнаем о 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 () Метод
read()
- читает байт данных из входного потокаreadBoolean()
- читает данные в логической формеreadChar()
- считывает данные в символьной формеreadInt()
- читает данные в целочисленной формеreadObject()
- читает объект из входного потока
Пример 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(); ) ) )
Вывод
Целочисленные данные: 5 Строковые данные: Это программируется
В приведенном выше примере, мы использовали 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(); ) ) )
Вывод
Имя собаки: Тайсон Порода собак: Лабрадор
В приведенном выше примере мы создали
ObjectOutputStream
именованный вывод с использованиемFileOutputStream
именованного файлаObjectInputStream
именованный ввод с использованиемFileInputStream
именованного fileStream- Объектная собака класса Dog
Здесь мы затем использовали поток вывода объекта для записи объекта в файл. И поток ввода объекта для чтения объекта из файла.
Примечание . Класс Dog реализует Serializable
интерфейс. Это потому, что ObjectOutputStream
только записывает сериализуемые объекты в выходной поток.
Другие методы ObjectInputStream
Методы | Описания |
---|---|
available() | возвращает доступное количество байтов во входном потоке |
mark() | отмечает позицию во входном потоке, до которой были прочитаны данные |
reset() | возвращает элемент управления в точку во входном потоке, где была установлена метка |
skipBytes() | пропускает и отбрасывает указанные байты из входного потока |
close() | закрывает поток ввода объекта |
Чтобы узнать больше, посетите Java ObjectInputStream (официальная документация по Java).