스트림은 단방향으로만 데이터를 전송할 수 있기 때문에, 입력과 출력을 처리하기 위해 각각의 스트림 필요.
FileInputStream
데이터 읽기
echo test >> inputTest.txt
// 다음과 같이 import문 작성 import java.io.FileInputStream; // 객체 생성 FileInputStream 참조변수명 = new FileInputStream("파일명.확장자");
FileInputStream
의 주요 메서드
반환타입 | 메서드 | 기능 |
---|---|---|
abstract int | read() | input stream data 1바이트를 읽음 |
int | read(byte[] b) | 1바이트를 읽고 배열에 저장, 읽은 수만큼 리턴 |
void | close() | 현재 input stream 종료 |
int | available() | 읽을 수 있는 바이트 수 리턴 |
long | skip(long n) | 읽을 수 있는 바이트에서 n 바이트 건너뛰고, 실제로 건너뛴 바이트 수 리턴 |
BufferedInputStream
: 성능 향상을 위해 사용하는 보조 스트림
// 다음과 같이 import문 작성 import java.io.FileInputStream; import java.io.BufferedInputStream; // 객체를 생성하고, 이 객체를 인자로 전달 FileInputStream 참조변수명1 = new FileInputStream("파일명.확장자"); BufferedInputStream 참조변수명2 = new BufferedInputStream(참조변수명1);
버퍼는 바이트의 배열. 여러 바이트를 저장하여 많은 양의 데이터를 입출력할 수 있도록 하는 임시 저장 공간.
FileOuputStream
데이터 쓰기
// 다음과 같이 import문 작성 import java.io.FileOuputStream; // 객체 생성 FileOuputStream 참조변수명 = new FileOuputStream("파일명.확장자");
FileOuputStream
의 주요 메서드
반환타입 메서드 기능 abstract
voidwrite(int b) output stream이 b를 바이트로 변환하여 씀 void write(byte[] b) output stream이 바이트 배열 b를 씀 void flush() 가득차지 않은 버퍼의 내용도 바로 내보냄 int available() 읽을 수 있는 바이트 수 리턴
위의 File 입출력 스트림은 바이트 기반 스트림이다.
2 byte의 char 타입을 위한 문자 기반 스트림도 존재하며, 여러 종류의 인코딩(encoding)과 유니코드(UTF-16)간의 변환을 자동으로 처리한다.
유니코드
FileReader
인코딩 > 유니코드
// 다음과 같이 import문 작성 import java.io.FileReader; // 객체 생성 FileReader 참조변수명 = new FileReader("파일명.확장자");
BufferedReader
: 성능 향상을 위해 사용하는 보조
// 다음과 같이 import문 작성 import java.io.FileReader; import java.io.BufferedReader; // 객체를 생성하고, 이 객체를 인자로 전달 FileReader 참조변수명1 = new FileReader("파일명.확장자"); BufferedReader 참조변수명2 = new BufferedReader(참조변수명1);
FileWriter
유니코드 > 인코딩
Read 와 비슷한 방식으로 작성하여 사용 가능.
// 다음과 같이 import문 작성 import java.io.FileWriter; // 객체 생성 FileWriter 참조변수명 = new FileWriter("파일명.확장자");
reference
🔗 I / O