평행코드

입출력(IO) 스트림 본문

Java

입출력(IO) 스트림

나의 오류는 누군가 겪었던 오류 2023. 10. 3. 00:35
IO

Input과 Output의 약자, 컴퓨터 내부 또는 외부 장치와 프로그램 간의
데이터를 주고 받는 것

스트림(Stream)

입출력 장치에서 데이터를 읽고 쓰기 위해서 자바에서 제공하는 클래스
모든 스트림은 단방향이며 각각의 장치마다 연결할 수 있는 스트림 존재
하나의 스트림으로 입출력을 동시에 수행할 수 없으므로
동시에 수행하려면 2개의 스트림 필요

InputStream

바이트 기반 입력 스트림의 최상위 클래스로 추상클래스임

FileInputStream

파일로부터 바이트 단위로 읽을 때 사용
그림, 오디오, 비디오, 텍스트 파일 등 모든 종류의 파일 읽기 가능
InputStream의 하위 클래스로 InputStream과 사용 방법 동일

FileInputStream객체가 생성될 때 파일과 직접 연결 됨
만약 파일이 존재하지 않으면 FileNotFoundException이
발생하므로 예외처리 필수
FileInputStream fis = new FileInputStream("C:/data/test.txt");
OutputStream

바이트 기반 출력 스트림의 최상위 클래스로 추상클래스임

FileOutputStream

파일에 바이트 단위로 저장할 때 사용
그림, 오디오, 비디오, 텍스트 파일 등 모든 종류의 데이터를 파일로 저장
OutputStream의 하위 클래스로 OutputStream과 사용 방법 동일

 

FileOutputStream객체가 생성될 때 파일과 직접 연결 됨
만약 파일이 존재하지 않으면 자동으로 생성하지만
이미 파일이 존재하는 경우 파일을 덮어쓰는 단점이 있음

FileOutputStream fos = new
FileOutputStream("C:/data/test.txt");
만일 기존 파일에 이어서 계속 작성하고 싶다면 아래 예제처럼 가능
FileOutputStream fos = new FileOutputStream
("C:/data/test.txt", true);
Reader

문자 기반 입력 스트림의 최상위 클래스로 추상클래스임

Writer

문자 기반 출력 스트림의 최상위 클래스로 추상클래스임

File 클래스

파일 시스템의 파일을 표현하는 클래스
파일 크기, 파일 속성, 파일 이름 등의 정보와 파일 생성 및 삭제 기능 제공

- File 객체 생성

File file = new File("파일 경로");
File file = new File("C:/data/test.txt");
FileReader

텍스트 파일로부터 문자 단위로 읽을 때 사용
텍스트가 아닌 그림, 오디오, 비디오 등의 파일은 읽기 불가능
Reader의 하위 클래스로 Reader와 사용 방법 동일

FileReader객체가 생성될 때 파일과 직접 연결 됨
만약 파일이 존재하지 않으면 FileNotFoundException이 발생하므로
예외처리 필수

FileReader fr = new FileReader("C:/data/test.txt");
FileReader fr = new FileReader(new File("C:/data/test.txt"));
FileWriter

텍스트 파일로부터 문자 단위로 저장할 때 사용
텍스트가 아닌 그림, 오디오, 비디오 등의 파일은 저장 불가능
Writer의 하위 클래스로 Writer와 사용 방법 동일

 

FileWriter객체가 생성될 때 파일과 직접 연결 됨
만약 파일이 존재하지 않으면 자동으로 생성하지만
이미 파일이 존재하는 경우 파일을 덮어쓰는 단점이 있음

FileWriter fw = new FileWriter("C:/data/test.txt");
만일 기존 파일에 이어서 계속 작성하고 싶다면 아래 예제처럼 가능
FileWriter fw = new FileWriter("C:/data/test.txt", true);
보조 스트림

스트림의 기능을 향상시키거나 새로운 기능을 추가하기 위해 사용
보조 스트림은 실제 데이터를 주고 받는 스트림이 아니기 때문에
입출력 처리 불가능 기반 스트림을 먼저 생성한 후 이를 이용하여 보조 스트림 생성

보조 스트림 종류

문자 변환(InputStreamReader, OutputStreamWriter),
입출력 성능(BufferedInputStream, BufferedOutputStream),
기본 데이터 타입 출력(DataInputStream, DataOutputStream),
객체 입출력(ObjectInputStream, ObjectOutputStream) 등의 기능을 제공하는 보조스트림이 있음

FileInputStream fis = new FileInputStream("sample.txt");
//기반 스트림 생성
BufferedInputStream bis = new BufferedInputStream(fis);
//보조스트림 생성
bis.read(); //보조스트림으로부터 데이터 읽어옴

'Java' 카테고리의 다른 글

Integer와 Int의 차이?  (0) 2024.01.17
직렬화  (0) 2023.10.03
자주쓰는 Exception  (0) 2023.09.21
Iterator , 동등성비교(equals @Override)  (0) 2023.09.20
다형성 추상클래스와 인터페이스  (0) 2023.09.17