본문 바로가기
Back-End/Java

파일 입출력(I/O)

by 달의 조각 2022. 7. 18.

 

InputStream, OutputStream

 

Stream: 단방향으로만 데이터 전송 가능

File을 다룰 때: FileInputStream / FileOutputStream
프로세스를 다룰 때: PipedInputStream / PipedOutputStream

 

FileInputStream

//문자열 code가 입력된 파일 생성
//src 폴더 상위에 있어야 한다
echo code >> codestates.txt
FileInputStream fileInput = new FileInputStream("codestates.txt");

 

BufferedInputStream

보조 스트림: 성능 향상
버퍼: 바이트 배열, 여러 바이트를 저장하여 한 번에 많은 데이터를 입출력할 수 있도록 돕는 임시 저장 공간

 

FileOutputStream

같은 디렉토리 내에 code라는 문자열이 입력된 codestates.txt 파일이 생성된다

FileOutputStream fileOutput = new FileOutputStream("codestates.txt");

 

 

FileReader, FileWriter

 

File 입출력 스트림: 바이트 기반(입출력 단위 1byte), But char 타입은 2byte이다
이를 해소하기 위해 문자 데이터를 다루기 위한 문자 기반 스트림이 제공된다

1. 여러 종류의 인코딩(encoding)과 자바에서 사용하는 유니코드(UTF-16)간의 변환 자동 처리
2. InputStream - Reader, OutputStream - Writer로 대응

FileReader: 인코딩 → 유니코드
FileWriter: 유니코드 → 인코딩

 

FileReader

FileReader file = new FileReader(fileName);

 

BufferedReader

성능 개선

BufferedReader buffered = new BufferedReader(file);

 

FileWriter

FileWriter writer = new FileWriter(fileName);

String str = "written!";

 

 

File

 

File 클래스로 파일과 디렉토리에 접근 가능

File file = new File("../codestates.txt");
File file = new File("./", "newCodestates.txt");
file.createNewFile();

'Back-End > Java' 카테고리의 다른 글

StringifyJSON  (0) 2022.07.22
스레드(Thread)  (0) 2022.07.19
스트림  (0) 2022.07.17
람다  (0) 2022.07.16
배열 문제 풀이  (0) 2022.07.06

댓글