자바 객체입력스트림

Jaba Gaegcheiblyeogseuteulim



“ObjectOutputStream의 개체를 통해 작성된 정보는 주로 ObjectInputStream 클래스를 사용하여 액세스됩니다. ObjectInputStream 클래스의 주요 목적은 ObjectOutputStream 클래스를 사용하여 생성되는 기본 데이터 및 엔터티를 재구성하는 것입니다. SocketStream을 사용하여 ObjectInputStream을 사용하여 다른 호스트 간에 개체를 전송할 수도 있습니다. 따라서 우리는 Ubuntu 20.04 시스템에서 objectinputstream 클래스 개체를 캐스팅하여 파일 입력 스트림에서 데이터를 읽는 데 유용한 가이드를 작성하기로 결정했습니다. 콘솔을 여는 것부터 시작합시다.'

실시예 01

이 기사의 첫 번째 예제를 시작하여 'test.java'라는 새 Java 파일을 만들고 있습니다. 그 후 같은 폴더에 텍스트 파일도 생성했습니다.







자바 프로그램에서 입력 스트림의 객체를 읽으려면 출력 스트림을 가져와야 합니다. 그래서 처음부터 'java.io.ObjectInputStream' 및 'java.io.ObjectOutputStream' 패키지를 가져왔습니다. 이와 함께 파일에 데이터를 삽입하려면 'java.io.FileInputStream'과 'java.io.FileInputStream'을 가져와야 합니다. 단일 main() 함수를 보유하는 'Main' 클래스를 만들었습니다.



함수 실행은 정수 변수 'd'의 선언에서 시작됩니다. 오류로 인한 프로그램의 갑작스러운 종료를 방지하기 위해 java의 try-catch 문을 추가했습니다. 'try' 부분은 FileOutputStream 클래스를 통한 파일 출력 스트림 개체 'f'의 초기화로 시작합니다. 이 객체 'f'에 파일 이름 'new.txt'를 전달했습니다. 객체 출력 스트림 'o'를 만들고 파일 객체 'f'를 ObjectOutputStream 클래스에 전달하여 파일을 출력 스트림으로 만듭니다.



바로 다음 줄에서 우리는 출력 스트림 객체 'o'를 통해 Java 출력 스트림의 writeInt() 함수를 호출하여 정수 변수 'd'를 전달했습니다. 즉, 파일에 저장합니다. 12행에서 우리는 파일 'new.txt'를 전달하여 Java의 FileInputStream 클래스를 사용하여 파일 입력 스트림 'fs'를 만들었습니다. 즉, 이미 데이터가 들어 있습니다. 이 파일 입력 스트림 개체 'fs'는 파일 스트림에서 읽을 수 있도록 ObjectInputStream 클래스의 새로 생성된 개체 'os'에 전달되었습니다. java의 'System.out' 패키지의 println() 함수는 new.txt 파일의 데이터를 표시하기 위해 개체 입력 스트림 개체 'os'를 통해 readInt() 함수를 호출하도록 캐스트오프되었습니다. 그 후, 우리는 자바에서 파일 처리의 '닫기' 기능을 사용하여 각각의 객체 'o'와 'os'를 사용하여 출력 스트림과 입력 스트림을 닫았습니다. 이것은 다른 사용자가 파일에서 데이터를 입력하거나 출력할 수 없도록 스트림을 닫는 데 필요한 단계입니다. catch() 문 내에서 오류를 가져오고 예외 변수 'e'를 통해 화면에 표시하기 위해 getStackTrace() 함수를 사용했습니다. 이 프로그램은 쉘에서 실행할 준비가 되었습니다.





실행 전에 자바 코드 파일을 저장하고 'test.java' 파일을 실행하기 위해 java 키워드 명령어를 사용했습니다. 대가로 아무것도 반환하지 않습니다. 또한 'cat' 명령을 사용하여 쉘에 'new.txt'라는 텍스트 파일의 데이터를 표시하면 가비지 값이 표시됩니다. 이는 대부분의 경우 Java 실행 프로그램이 파일에서 정수 값을 읽을 수 없기 때문입니다. 그러나 대부분의 경우 정확한 정수 값을 표시합니다.



new.txt 파일을 수동으로 열어 확인하면 값의 유니코드 형식이 파일에 표시되는 것을 볼 수 있습니다.

파일 스트림에서 정수 값을 표시할 수 없는 경우 writeInt() 함수 대신 자바 프로그램에서 writeObject() 함수를 사용하여 객체 'o'를 통해 파일 스트림에 값 'd'를 쓸 수 있습니다. 표시됩니다. 그와 함께 파일 입력 스트림의 데이터를 표시하려면 readInt() 함수 대신 'readObject()' 함수를 캐스트해야 합니다.

이 코드를 업데이트하면 실행 시 정수 값이 표시됩니다.

실시예 02

문자열 유형 값에 대한 객체 입력 스트림을 캐스트하기 위해 자바 프로그래밍의 또 다른 값이 있다고 가정해 보겠습니다. 따라서 Java 라이브러리의 'io' 패키지에서 Java의 동일한 FileInputStream, FileOutputStream, ObjectInputStream 및 ObjectOutputStream 클래스를 가져오는 것으로 이 예제 코드를 시작했습니다. Main 클래스에는 이 코드 실행을 시작하는 main() 함수가 있습니다. 문자열 변수 'd2'는 긴 문자열 값으로 초기화됩니다.

오류를 방지하고 이 Java 코드를 원활하게 실행하기 위해 동일한 try-catch 문이 캐스트오프되었습니다. 파일 출력 스트림에 대한 개체 'f'는 'new.txt'를 인수로 사용하는 FileOutputStream 클래스를 통해 생성되었습니다. 파일 출력 스트림 개체 'f'는 ObjectOutputStream 클래스를 사용하여 생성된 출력 스트림 개체 'o'에 전달되었습니다. 이제 출력 스트림 'o'는 'new.txt' 파일에 쓸 문자열 변수 'd'를 전달하여 writeObject() 함수를 호출했습니다.

그런 다음 파일 이름 'new.txt'를 전달하여 FileInputStream 클래스를 사용하여 파일 입력 스트림 'fs'를 생성했습니다. 즉, 데이터를 읽습니다. 이제 ObjectInputStream 클래스 객체 'os'는 'System.out' 클래스의 'println' 실행 문에서 java의 readObject() 함수를 사용하여 데이터를 읽기 위해 파일 입력 스트림 객체 'fs'를 사용할 것입니다. 그런 다음 '닫기' 함수를 호출하여 입력 및 출력 스트림을 닫는 경향이 있으며 catch 문은 try 부분에서 발생한 예외를 가져오고 이 프로그램 실행이 갑자기 닫히는 것을 방지하는 데 사용됩니다.

이 Java 코드 파일과 텍스트 파일을 실행하면 콘솔에 문자열 값이 표시됩니다.

결론

ObjectInputStream 클래스의 사용은 Serializable 또는 Externalizable 프로토콜을 사용하는 물질을 읽는 데 사용할 수 있는 유일한 방법입니다. 요약하자면, Java의 objectinputstream 클래스를 활용하여 파일 개체 입력 스트림에서 데이터를 읽는 데 필요한 모든 세부 정보를 포함했습니다. 이를 위해 여기에서 두 가지 다른 Java 코드 예제를 캐스팅했습니다. 첫 번째 예는 정수 유형 입력 변수 값을 사용하는 반면 두 번째 그림은 문자열 변수 값을 캐스팅하는 것입니다. 즉, 입력 파일 스트림에서 읽습니다.