ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java | I/O 바이트 단위 스트림
    JAVA/JAVA 2020. 2. 6. 22:26

    바이트 단위 스트림

    바이트 단위로 데이터를 읽거나 쓰는 스트림


    InputStream

    바이트 단위로 읽는 스트림 중 최상위 스트림

    추상 메소드를 포함한 추상 클래스로서 하위 스트림 클래스가 상속받아
    각 클래스 역할에 맞게 추상 메소드의 기능을 구현함


    주로 사용하는 하위 클래스

    스트림 클래스 설명
    FileInputStream 파일에서 바이트 단위로 자료를 읽음
    ByteArrayInputStream Byte 배열 메모리에서 바이트 단위로 자료를 읽음
    FilterInputStream 기반 스트림에서 자료를 읽을 때 추가 기능을 제공하는 보조 스트림의 상위 클래스

    InputStream 메소드

    메소드 설명
    int read() 입력 스트림으로부터 한 바이트의 자료를 읽음
    읽은 자료의 바이트 수 반환
    int read(byte b[]) 입력 스트림으로부터 b[]크기의 자료를 b[]에 읽어 옴
    읽은 자료의 바이트 수 반환
    int read(byte b[], int off, int len) 입력 스트림으로부터 b[]크기의 자료를 off 인덱스부터
    len 개수만큼 읽음, 읽은 자료의 바이트 수 반환
    void close() 입력 스트림과 연결된 대상 리소소를 닫음
    ex) FileInputStream의 경우 파일을 닫음
    int available() 입력 스트림으로 읽어올 수 있는 잔여 바이트 수 반환
    파일을 불러오지 못하는 경우 -1 리턴

    FileInputStream

    파일에서 바이트 단위로 자료를 읽어 들일 때 사용하는 스트림 클래스
    스트림을 사용하기 위해서는 먼저 스트림 클래스 객체를 생성해야 함


    FileInputStream 생성자

    생성자 설명
    FileInputStream(String name) 파일 이름(경로 포함) name을 매개변수로 받아 입력 스트림 생성
    FileInputStream(File f) File 클래스 정보(객체)를 매개변수로 받아 입력 스트림 생성

    OutputStream

    바이트 단위로 쓰는 스트림 중 최상위 스트림


    주로 사용하는 하위 클래스

    스트림 클래스 설명
    FileOutputStream 파일에 바이트 단위로 자료를 씀
    ByteArrayOutputStream Byte 배열에 바이트 단위로 자료를 씀
    FilterOutputStream 기반 스트림에서 자료를 쓸 때 추가 기능을 제공하는 보조 스트림의 상위 클래스

    OutputStream Method

    메소드 설명
    void write(int b) 한 바이트 출력
    void write(byte[] b) b[] 배열에 있는 자료 출력
    void write(byte b[], int off, int len) b[] 배열에 있는 자료의 off 인덱스부터 len 개수만큼 자료를 출력
    void flush() 출력을 위해 잠시 자료가 머무르는 출력 버퍼를 강제로 비워서 자료 출력
    void close() 출력 스트림과 연결된 대상 리소스를 닫음, 출력 버퍼가 비워짐
    ex) FileInputStram의 경우 파일을 닫음

    OutputStream 생성자

    메소드 설명
    FileOutputStream(String name) 파일 이름(경로 포함) name을 매개변수로 받아 출력 스트림 생성
    write()메소드 사용시 같은 파일에 데이터를 덮어서 씀
    FileOutputStream(String name, boolean append) 파일 이름(경로 포함) name을 매개변수로 받아 출력 스트림 생성
    append 값이 true이면 파일 스트림을 닫고 다시 생성할 때 같은 파일의 끝에 이어서 씀, 기본값은 false
    FileOutputStream(File f) File 클래스 객체를 매개변수로 받아 출력 스트림 생성
    FileOutputStream(File f, boolean append) File 클래스 객체를 매개변수로 받아 출력 스트림 생성
    append 값이 true이면 파일 스트림을 닫고 다시 생성할 때 같은 파일의 끝에 이어서 씀, 기본값은 false

    예제_FileInputStream & FileOutputStream

    package j200206;
    
    import java.io.*;
    
    public class FileInputTest2 {
    
        public static void main(String[] args) throws Exception {
    
            // 해당 파일을 읽어들이는 스트림 객체 생성
            FileInputStream fis = new FileInputStream("C:/webtest/3.java/JAVA-Study/200206/src/j200206/SimpleIn.java");
    
            // 파일을 출력할 스트림 객체 생성
            FileOutputStream fos = new FileOutputStream("C:/webtest/3.java/JAVA-Study/200206/src/j200206/Test.java");
    
            // 파일을 임시로 저장할 변수
            int read = 0;
    
            while (true) {
                read = fis.read();
                // read 값이 -1이 되면 while문에서 탈출
                if (read == -1)
                    break;
                fos.write(read);
            }
            /*
            j200206 폴더에 test.java 생성
            package j200206;
            ....
            */ 
    
        }
    
    }

    ※ java 파일뿐만 아니라 동영상, 이미지, 실행 파일 등 거의 모든 파일에 적용 가능

     

    ※ 스트림 사용 후에는 close() 메소드로 메모리에서 해제해 주어야 프로그램 성능을 보다 향상시킬 수 있음


    바이트 단위로 데이터를 읽고 쓰는 바이트 단위 스트림에 대해 알아보았습니다.

    그 중에서도 FileInputStream과 FileOutputStream은 가장 많이 쓰이기 때문에 사용법 정도는 알아두는 것이 좋겠습니다.

    스트림 클래스에서 제공하는 메소드 중 자주 쓰이는 메소드 이름은 클래스마다 대부분 비슷하기 때문에

    우선은 입/출력 메소드로 구분해서 메소드를 조금 외워두면 좋을 것 같습니다.

    'JAVA > JAVA' 카테고리의 다른 글

    Java | I/O 보조 스트림  (0) 2020.02.06
    Java | I/O 문자 단위 스트림  (0) 2020.02.06
    Java | I/O 표준 입출력  (0) 2020.02.06
    Java | I/O(Input / Output) 입출력 개요  (0) 2020.02.06
    Java | 예외 처리 throws & throw  (0) 2020.02.05

    댓글

Designed by Tistory.