Java ObjectInputStream

Java Objectinputstream



„Информацията, написана чрез обекта на ObjectOutputStream, се осъществява основно чрез класа ObjectInputStream. Основната цел на класа ObjectInputStream би била да реконструира основните данни и обекти, които се произвеждат чрез използване на клас ObjectOutputStream. Като използва SocketStream, ObjectInputStream може също да се използва за прехвърляне на обекти между различни хостове. Затова решихме да напишем полезно ръководство за нашата система Ubuntu 20.04, за да отхвърлим обекта на клас objectinputstream за четене на данни от входния поток на файла. Да започнем с отварянето на конзола.

Пример 01

Започвайки с първия пример на нашата статия, ние създаваме нов java файл, „test.java“. След това генерирахме и текстов файл в същата папка.







За да прочетем обекти от входния поток в java програма, трябва да импортираме изходния поток. И така, ние импортирахме пакетите „java.io.ObjectInputStream“ и „java.io.ObjectOutputStream“ в началото. Заедно с това, за да вмъкнем данните във файл, трябва да импортираме „java.io.FileInputStream“ и „java.io.FileInputStream“. Създадохме клас „Main“, който съдържа една функция main().



Изпълнението на функцията започва от декларацията на целочислена променлива “d”. За да избегнем внезапното излизане на програмата поради грешки, добавихме командата try-catch на java. Частта „опитайте“ започва с инициализирането на обект на изходен поток на файл „f“ чрез класа FileOutputStream. Предадохме името на файла „new.txt“ на този обект „f“. Създадохме обектен изходен поток „o“ и предадохме файловия обект „f“ на класа ObjectOutputStream, за да направим файла изходен поток.



Още на следващия ред извикваме функцията writeInt() на изходния поток на Java чрез обекта на изходния поток „o“, за да му предадем целочислена променлива „d“, т.е. да го запазим във файл. На ред 12 създадохме файлов входен поток „fs“, използвайки класа FileInputStream на java, като му предадохме файл „new.txt“, т.е. вече има данни в него. Този обект на входен поток на файл „fs“ е предаден на новогенерирания обект „os“ на класа ObjectInputStream, за да позволи четене от потока на файла. Функцията println() от пакета „System.out“ на java е отхвърлена, за да извика функцията readInt() чрез обекта на входния поток „os“, за да покаже данните от файла new.txt. След това затваряме изходния поток и входния поток, използвайки съответните им обекти „o“ и „os“, използвайки функцията „close“ за обработка на файлове в java. Това е необходима стъпка за затваряне на потоците, така че никой друг потребител да не може да въвежда или извежда данни от файл. В оператора catch() използвахме функцията getStackTrace(), за да получим грешка и да я покажем на екрана чрез променливата Exception „e“. Тази програма е готова за изпълнение в shell.





Току-що бяхме запазили нашия файл с java код преди неговото изпълнение и използвахме инструкцията за ключова дума java, за да изпълним файла „test.java“. Не връща нищо в замяна. Също така, показването на данните от текстов файл „new.txt“ в обвивката с помощта на инструкцията „cat“ показва ненужна стойност. Това е така, защото през повечето време Java изпълнителят не може да прочете целочислената стойност от файла. Но най-вероятно ще покаже точната целочислена стойност.



При проверка на файла new.txt чрез ръчно отваряне видяхме, че във файла е показан Unicode формат на стойността.

Ако не можете да покажете целочислената стойност от файловия поток, можете да използвате функцията writeObject() в програмата на Java вместо функцията writeInt(), за да запишете стойността „d“ във файловия поток чрез обекта „o“ както е показано. Заедно с това трябва да отхвърлите функцията „readObject()“ вместо функцията readInt(), за да покажете данните от входния поток на файла.

Актуализирането на този код ще покаже целочислената стойност при изпълнение.

Пример 02

Нека имаме друга стойност на програмирането на Java, за да отхвърлим входния поток на обекта за стойността на типа низ. По този начин започнахме този примерен код с импортирането на същите класове FileInputStream, FileOutputStream, ObjectInputStream и ObjectOutputStream на java от пакета „io“ на библиотеката на java. Основният клас има своята функция main(), за да започне изпълнението на този код. Низова променлива „d2“ се инициализира с дълга низова стойност.

Същият оператор try-catch е изхвърлен, за да се избегне грешката и за гладко изпълнение на този Java код. Обектът „f“ за изходния поток на файла е създаден чрез класа FileOutputStream, приемащ „new.txt“ като аргумент. Обектът на изходния поток на файла „f“ е предаден на обекта на изходния поток „o“, който е създаден чрез използването на клас ObjectOutputStream. Сега изходният поток „o“ извиква функцията writeObject(), като й предава низова променлива „d“, която да бъде записана във файла „new.txt“.

След това създаде входен поток на файл „fs“, използвайки класа FileInputStream, като му предаде име на файл „new.txt“, т.е., за да прочете данните от него. Сега обектът на класа ObjectInputStream „os“ ще използва обекта на входния поток на файла „fs“, за да прочете данните, използвайки функцията readObject() на java в оператора за изпълнение „println“ на класа „System.out“. След това, ние сме склонни да затворим входните и изходните потоци, като извикаме функцията „close“ и операторът catch се използва, за да получим изключения, които са се случили в пробната част и да избегнем внезапното затваряне на това изпълнение на програмата.

Изпълнението на този файл с код на Java и текстовия файл показаха стойността на низа на конзолата.

Заключение

Използването на клас ObjectInputStream е единственият наличен метод за четене на вещества, които използват протокола Serializable или Externalizable. За да обобщим, включихме всички необходими детайли, за да използваме класа objectinputstream на Java за четене на данни от входния поток на файлов обект. За целта тук сме кастирали два различни примера на Java код. Първият пример използва стойността на променливата за въвеждане на целочислен тип, докато втората илюстрация отхвърля стойността на променливата на низа, т.е., прочетена от потока на входния файл.