보조스트림 : 기본 자료형으로 입출력하기

2023. 10. 2. 10:24· Java/Java 이론
목차
  1. 파일 쓰기
  2. 파일 읽기
반응형

파일 쓰기

public class DataInputApplication {
    public static void main(String[] args) throws Exception {   // 예외처리
        // TODO : 파일 쓰기용으로 파일 생성
        FileOutputStream fileOutputStream
                = new FileOutputStream("src/main/resources/primitive.txt");

        // TODO : 보조스트림 : 기본 자료형 사용하게 만들어주는 스트림
        //      사용법 : new DataOutputStream(기본스트림);
        DataOutputStream dataOutputStream
                = new DataOutputStream(fileOutputStream);

        // 파일에 기본 자료형 쓰기 함수들
        // TODO : writeUTF("문자열") -> 파일에 문자열 쓰기
        //        writeDouble(실수) -> 파일에 실수 쓰기
        //        writeInt(정수) -> 파일에 정수 쓰기
        dataOutputStream.writeUTF("홍길동");
        dataOutputStream.writeDouble(95.4);
        dataOutputStream.writeInt(1);

//        TODO: 여기서 부터 코딩
        dataOutputStream.writeUTF("감자바");
        dataOutputStream.writeDouble(90.3);
        dataOutputStream.writeInt(2);
        
        // TODO : 파일 닫기
        dataOutputStream.flush();   // 기본버퍼의 내용을 진짜파일에 쓰기
        dataOutputStream.close();

    }
}

우선 FileOutputStream을 사용하여 파일을 생성합니다.

// TODO : 파일 쓰기용으로 파일 생성
FileOutputStream fileOutputStream
        = new FileOutputStream("src/main/resources/primitive.txt");

 

보조 스트림을 사용합니다.

// TODO : 보조스트림 : 기본 자료형 사용하게 만들어주는 스트림
//      사용법 : new DataOutputStream(기본스트림);
DataOutputStream dataOutputStream
        = new DataOutputStream(fileOutputStream);

dataOutputStream에는 여러 함수들이 존재합니다.

// TODO : writeUTF("문자열") -> 파일에 문자열 쓰기
//        writeDouble(실수) -> 파일에 실수 쓰기
//        writeInt(정수) -> 파일에 정수 쓰기
dataOutputStream.writeUTF("홍길동");
dataOutputStream.writeDouble(95.4);
dataOutputStream.writeInt(1);
dataOutputStream.writeUTF("감자바");
dataOutputStream.writeDouble(90.3);
dataOutputStream.writeInt(2);

마무리로 .flush()와 .close()를 실행합니다.

// TODO : 파일 닫기
dataOutputStream.flush();   // 기본버퍼의 내용을 진짜파일에 쓰기
dataOutputStream.close();

 

파일 읽기

생성한 파일을 읽기 위해 접근 생성자를 생성합니다.

FileInputStream fileInputStream
        = new FileInputStream("src/main/resources/primitive.txt");

 

보조스트림을 적용하여 기본자료형 기능을 추가해줍니다.

DataInputStream dataInputStream
        = new DataInputStream(fileInputStream);

 

반복문을 실행하여 화면에 출력합니다.

이때 반복문은 2번 실행합니다. 그 이유는 위에 요소를 2개 추가하였기 때문입니다.

        dataOutputStream.writeUTF("홍길동");
        dataOutputStream.writeDouble(95.4);
        dataOutputStream.writeInt(1);


        dataOutputStream.writeUTF("감자바");
        dataOutputStream.writeDouble(90.3);
        dataOutputStream.writeInt(2);

반복문을 작성할 때 주의점은 요소들의 바이트 크기가 각기 다르기 때문에 출력순서에 맞게 자료형을 읽어야 합니다.

        // TODO : 반복문 실행 후 화면에 출력 : 두번 실행
        //     주의점 : 바이트 크기가 각각 다르므로 출력순서에 맞게 자료형을 읽어야 함
        for (int i = 0; i < 2; i++) {
//            dataOutputStream.writeUTF("감자바"); //
//            dataOutputStream.writeDouble(90.3); // 8byte
//            dataOutputStream.writeInt(2);       // 4byte
            String name = dataInputStream.readUTF();        // 파일에서 읽기
            double score = dataInputStream.readDouble();        // 파일에서 읽기
            int order = dataInputStream.readInt();        // 파일에서 읽기
            System.out.println(name + ", " + score + ", " + order);

        }

마무리로 파일을 닫아줍니다.

// TODO : 파일 닫기
dataInputStream.close();
fileInputStream.close();

실행결과

홍길동, 95.4, 1
감자바, 90.3, 2

반응형
저작자표시 비영리 변경금지 (새창열림)

'Java > Java 이론' 카테고리의 다른 글

objectstream  (0) 2023.10.02
printstream  (0) 2023.10.02
파일 복사 성능 테스트(일반복사 vs 버퍼 사용복사)  (0) 2023.10.02
보조스트림  (0) 2023.09.27
입출력 Stream  (0) 2023.09.27
  1. 파일 쓰기
  2. 파일 읽기
'Java/Java 이론' 카테고리의 다른 글
  • objectstream
  • printstream
  • 파일 복사 성능 테스트(일반복사 vs 버퍼 사용복사)
  • 보조스트림
2주녘
2주녘
가디사는 개발자의 기술블로그
반응형
2주녘
Just Do "IT"
2주녘
전체
오늘
어제
  • 분류 전체보기 (245) N
    • 이론 (0)
    • Node.js (2)
    • Flutter (19)
    • Project (1)
      • Team Project (3)
    • Daily (0)
      • 일기 (0)
      • 리뷰 (0)
    • Spring Boot (23)
      • 스프링부트 예제 (20)
    • Java (88)
      • Java 이론 (67)
      • Java 연습문제 (21)
      • 오류 노트 (0)
    • HTML (9)
      • HTML 이론 (9)
      • HTML 실습 (0)
    • CSS (27)
      • CSS 이론 (19)
      • CSS 실습 (8)
    • JavaScript (8)
      • JS 이론 (5)
      • JS 실습 (0)
      • jQuery (3)
    • React (19)
      • 이론 (13)
      • 실습 (6)
    • SQL (18)
      • SQL_이론 (18)
    • Git (3)
    • 자격증 (18) N
      • SQLD (15) N
      • 정보처리기사 (3)
    • 기술면접 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바스크립트
  • DART
  • JavaScript
  • 벡엔드
  • 백앤드
  • 자바
  • 프론트앤드
  • flutter 기초
  • 플러터 기초
  • JPA
  • JSP
  • sqld
  • 개발자
  • HTML
  • 리액트
  • 스프링부트
  • springboot
  • 상수
  • 플러터
  • 변수
  • CSS
  • jQuery
  • 댓글구현
  • 제이쿼리
  • TypeScript
  • Flutter
  • 타입스크립트
  • SQL
  • Java
  • Spring

최근 글

hELLO · Designed By 정상우.v4.2.1
2주녘
보조스트림 : 기본 자료형으로 입출력하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.