Java ObjectInputStream

Java Objectinputstream



„Do informacji zapisanych za pośrednictwem obiektu ObjectOutputStream uzyskuje się dostęp przede wszystkim za pomocą klasy ObjectInputStream. Głównym celem klasy ObjectInputStream byłoby zrekonstruowanie podstawowych danych i encji, które są wytwarzane przy użyciu klasy ObjectOutputStream. Korzystając z SocketStream, ObjectInputStream może być również wykorzystany do przesyłania obiektów między różnymi hostami. Dlatego zdecydowaliśmy się napisać pomocny przewodnik dla naszego systemu Ubuntu 20.04, aby odrzucić obiekt klasy objectinputstream w celu odczytania danych ze strumienia wejściowego pliku. Zacznijmy od otwarcia konsoli.”

Przykład 01

Rozpoczynając pierwszy przykład naszego artykułu, tworzyliśmy nowy plik java, „test.java”. Następnie wygenerowaliśmy również plik tekstowy w tym samym folderze.







Aby odczytać obiekty strumienia wejściowego w programie java, musimy zaimportować strumień wyjściowy. Tak więc na początku importowaliśmy pakiety „java.io.ObjectInputStream” i „java.io.ObjectOutputStream”. Oprócz tego, aby wstawić dane do pliku, musimy zaimportować „java.io.FileInputStream” i „java.io.FileInputStream”. Stworzyliśmy klasę „Main” zawierającą pojedynczą funkcję main().



Wykonanie funkcji rozpoczyna się od deklaracji zmiennej całkowitej „d”. Aby uniknąć nagłego wyjścia z programu z powodu błędów, dodaliśmy instrukcję try-catch java. Część „try” rozpoczyna się od zainicjowania obiektu strumienia wyjściowego pliku „f” za pośrednictwem klasy FileOutputStream. Do tego obiektu „f” przekazaliśmy nazwę pliku „new.txt”. Utworzyliśmy strumień wyjściowy obiektu „o” i przekazaliśmy obiekt pliku „f” do klasy ObjectOutputStream, aby plik stał się strumieniem wyjściowym.



W następnym wierszu wywołaliśmy funkcję writeInt() strumienia wyjściowego Javy za pośrednictwem obiektu strumienia wyjściowego „o”, aby przekazać mu zmienną całkowitą „d”, czyli zapisać ją w pliku. W wierszu 12 utworzyliśmy strumień wejściowy pliku „fs” przy użyciu klasy FileInputStream języka java, przekazując mu plik „new.txt”, czyli mamy już w nim dane. Ten obiekt strumienia wejściowego pliku „fs” został przekazany do nowo wygenerowanego obiektu „os” klasy ObjectInputStream, aby umożliwić odczyt ze strumienia pliku. Funkcja println() z pakietu „System.out” javy została odrzucona, aby wywołać funkcję readInt() za pośrednictwem obiektu strumienia wejściowego obiektu „os”, aby wyświetlić dane z pliku new.txt. Następnie zamykaliśmy strumień wyjściowy i strumień wejściowy za pomocą odpowiednich obiektów „o” i „os” za pomocą funkcji „zamknij” obsługi plików w javie. Jest to niezbędny krok do zamknięcia strumieni, aby żaden inny użytkownik nie mógł wprowadzać ani wyprowadzać danych z pliku. W instrukcji catch() używaliśmy funkcji getStackTrace(), aby uzyskać błąd i wyświetlić go na ekranie za pomocą zmiennej wyjątku „e”. Ten program jest gotowy do wykonania w powłoce.





Właśnie zapisaliśmy nasz plik kodu java przed jego wykonaniem i użyliśmy instrukcji słowa kluczowego java, aby wykonać plik „test.java”. Nie zwraca nic w zamian. Ponadto wyświetlenie danych pliku tekstowego „new.txt” na powłoce za pomocą instrukcji „cat” wyświetlało wartość śmieci. Dzieje się tak, ponieważ przez większość czasu executor java nie jest w stanie odczytać wartości całkowitej z pliku. Ale najprawdopodobniej wyświetli dokładną wartość całkowitą.



Po sprawdzeniu pliku new.txt przez ręczne jego otwarcie zobaczyliśmy, że w pliku został pokazany format Unicode wartości.

Jeśli nie możesz wyświetlić wartości całkowitej ze strumienia pliku, możesz użyć funkcji writeObject() w programie java zamiast funkcji writeInt(), aby zapisać wartość „d” do strumienia pliku za pośrednictwem obiektu „o” jak pokazano. Oprócz tego musisz odrzucić funkcję „readObject()” zamiast funkcji readInt(), aby wyświetlić dane ze strumienia wejściowego pliku.

Zaktualizowanie tego kodu spowoduje wyświetlenie liczby całkowitej podczas wykonywania.

Przykład 02

Przyjrzyjmy się innej wartości programowania w javie, aby odrzucić strumień wejściowy obiektu dla wartości typu string. Dlatego rozpoczęliśmy ten przykładowy kod od importu tych samych klas java FileInputStream, FileOutputStream, ObjectInputStream i ObjectOutputStream z pakietu „io” biblioteki java. Klasa Main ma swoją funkcję main(), która rozpoczyna wykonywanie tego kodu. Zmienna łańcuchowa „d2” jest inicjowana długą wartością ciągu.

Ta sama instrukcja try-catch została odrzucona, aby uniknąć błędu i płynnego wykonania tego kodu java. Obiekt „f” dla strumienia wyjściowego pliku został utworzony za pomocą klasy FileOutputStream, przyjmując jako argument „new.txt”. Obiekt strumienia wyjściowego pliku „f” został przekazany do obiektu strumienia wyjściowego „o”, który został utworzony przy użyciu klasy ObjectOutputStream. Teraz strumień wyjściowy „o” wywołuje funkcję writeObject(), przekazując jej zmienną łańcuchową „d” do zapisania w pliku „new.txt”.

Następnie utworzono strumień wejściowy pliku „fs” przy użyciu klasy FileInputStream, przekazując mu nazwę pliku „new.txt”, tj. Aby odczytać z niego dane. Teraz obiekt klasy ObjectInputStream „os” używałby obiektu strumienia wejściowego pliku „fs” do odczytywania danych za pomocą funkcji readObject() języka java w instrukcji wykonania „println” klasy „System.out”. Następnie mamy tendencję do zamykania strumieni wejściowych i wyjściowych, wywołując funkcję „zamknij”, a instrukcja catch jest wykorzystywana do uzyskania wszelkich wyjątków, które miały miejsce w części try i uniknięcia nagłego zamknięcia tego programu.

Wykonanie tego pliku kodu java i pliku tekstowego wyświetliło wartość ciągu na konsoli.

Wniosek

Użycie klasy ObjectInputStream jest jedyną dostępną metodą odczytu substancji korzystających z protokołu Serializable lub Externalizable. Podsumowując, zawarliśmy wszystkie niezbędne szczegóły, aby wykorzystać klasę objectinputstream Java do odczytu danych ze strumienia wejściowego obiektu pliku. W tym celu rzuciliśmy tutaj dwa różne przykłady kodu java. Pierwszy przykład wykorzystuje wartość zmiennej wejściowej typu integer, podczas gdy druga ilustracja odrzuca wartość zmiennej ciągu, tj. odczytuje ze strumienia pliku wejściowego.