[JAVA] 고수준 스트림(Data/Object Stream)

2024. 5. 22. 10:24·JAVA

DataInputStream 과 DataOutputStream

DataInputStream 과 DataOutputStream은 자바의 I/O 스트림 클래스 중 하나로, 원시 자료형(정수, 실수, 문자 등)을 쉽게 읽고 쓸 수 있도록 도와준다.

이 두 클래스는 데이터의 형식을 유지하면서 입력 및 출력을 수행할 수 있어, 자료의 손실 없이 데이터를 주고받을 수 있다.

 

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class MyDataStream {

	public static void main(String[] args) {

		// 데이터 쓰기 - 바이트, 문자 기반이 아닌 기본 자료형 데이터 타입으로 보내기
		// 파일에 사용 --> FileOutputStream("대상파일이름") <-- 확장 (보조스트림)
		try (DataOutputStream dos = new DataOutputStream(new FileOutputStream("student.txt"))) {
			dos.writeInt(101); // 학번
			dos.writeUTF("홍길동"); // 이름
			dos.writeDouble(3.5); // 학점
		} catch (Exception e) {
			e.printStackTrace();
		}

		System.out.println(">>> 데이터 쓰기 완료 (원시타입) <<< ");

		// 기본 데이터 타입으로 데이터 읽기
		try (DataInputStream dis = new DataInputStream(new FileInputStream("student.txt"))) {
			int id = dis.readInt();
			String name = dis.readUTF();
			double score = dis.readDouble();
			
			System.out.println("학번 : " + id);
			System.out.println("이름 : " + name);
			System.out.println("학점 : " + score);
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}

		System.out.println(">>> 데이터 읽기 완료 (기본 데이터 타입) <<<");
		
	}// end of main

}

실행 결과______

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;


public class MyObjectStream {

	public static void main(String[] args) {

		// 객체 직렬화
		try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.txt"))) {

			Person person = new Person("손흥민", 30);
			oos.writeObject(person);

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

		System.out.println("-------------------");

		// 객체 역직렬화
		try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.txt"))) {

			// 문자 기반 데이터를 읽으면 <-- 스트림 값 추출해서 코드상에 활용할 수 있도록 Object
			// 만드는 코딩을 해야 한다. name; 10 <--
			Person person = (Person) ois.readObject();
			System.out.println(person);

		} catch (Exception e) {
			e.printStackTrace(); // 예외 처리 흐름 생성 가능
		}

	}

}

실행 결과_____

------------------------------------------

▶ txt 파일

'JAVA' 카테고리의 다른 글

[JAVA] 1:1 단방향 통신 (서버측)  (0) 2024.05.24
[JAVA] Socket 이란?  (0) 2024.05.23
[JAVA] 사용자모드와 커널모드  (0) 2024.05.22
[JAVA] 로그와 파일 저장  (0) 2024.05.21
[JAVA] 파일복사(문자기반 입/출력), ZIP파일로 압축  (0) 2024.05.21
'JAVA' 카테고리의 다른 글
  • [JAVA] 1:1 단방향 통신 (서버측)
  • [JAVA] Socket 이란?
  • [JAVA] 사용자모드와 커널모드
  • [JAVA] 로그와 파일 저장
미로910
미로910
개발자를 꿈꾸는 민경이의 기록 블로그
  • 미로910
    개발 note
    미로910
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 설치 메뉴얼
      • HTML
      • JAVA
        • Java 기초
        • Java 응용
        • 자료구조
        • HTTP
        • JSP 프로그래밍
      • MySQL
        • MySQL 기본
        • 1일 1쿼리
      • CSS
      • Spring boot
      • JS
        • 게시판 만들기
      • Git
      • Flutter
        • MVVM 활용
        • 심화 버전
        • 1일 1 Flutter
      • 디자인 패턴의 활용
      • error note
      • My Project
        • [졸작] LLM 기반 특허 유사도 분석 시스템
        • 도서 관리 프로그램 (final project)
        • amigo
        • 친구 매칭 프로그램(FMP)
      • Python
      • 딥러닝
      • 네트워크
      • 공부 노트
        • 연구회
        • 자료구조
      • 기타
  • 블로그 메뉴

    • 홈
    • 전체보기
    • -----------------------
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Flutter
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
미로910
[JAVA] 고수준 스트림(Data/Object Stream)
상단으로

티스토리툴바