<aside> 💡 키워드
</aside>
<aside> 💡 세부내용
</aside>
스트림은 단방향으로만 데이터를 전송할 수 있기에, 입력과 출력을 동시에 처리하기 위해서는 각각의 스트림이 필요
바이트 기반 스트림 : File을 다룰 때는 FileInputStream / FileOutputStream, 프로세스를 다룰 때는 PipedInputStream / PipedOutputStream 사용
FileInputStream
주어진 객체가 가리키는 파일을 바이트 스트림으로 읽기 위한 FileInputStream 객체 생성
FileInputStream fileInput = new FileInputStream("파일이름");
Buffer : 여러 바이트를 저장하여 한 번에 많은 양의 데이터를 입출력할 수 있도록 도와주는 임시 공간
read()
: 값을 읽는 메서드
close()
: 현재 FileInputStream을 닫는 메서드
FileInputStream fileInput = new FileInputStream("파일이름");
int data = 0;
while ((data = fileInput.read()) != -1) { //더이상 읽을 값이 없으면 -1 리턴
System.out.print((char)data);
}
fileInput.close();
BufferedInputStream : 버퍼를 이용하여 입력 성능을 향상시키는 보조 스트림
FileInputStream fileInput = new FileInputStream("파일이름");
BufferedInputStream bufferedInput = new BufferedInputStream(fileInput);
int data = 0;
while ((data = bufferedInput.read()) != -1) { //더이상 읽을 값이 없으면 -1 리턴
System.out.print((char)data);
}
fileInput.close();
FileOutputStream
FileOutputStream을 통해 입력된 문자열이 설정한 파일내부에 출력된다
getBytes()
: 유니코드문자열(String)을 바이트코드로 인코딩 해주는 메서드
write()
: 값을 입력하는 메서드
close()
: 현재 FileWriter을 닫는 메서드
FileOutputStream fileOutput = new FileOutputStream("Example.txt");
String word = "example";
byte b[] = word.getBytes();
fileOutput.write(b);
fileOutput.close();
주어진 객체가 가리키는 파일을 문자 기반 스트림으로 읽기 위한 FileReader 객체 생성
FileReader fileInput = new FileReader("파일이름");
Buffer : 여러 바이트를 저장하여 한 번에 많은 양의 데이터를 입출력할 수 있도록 도와주는 임시 공간
read()
: 값을 읽는 메서드
close()
: 현재 FileReader을 닫는 메서드
FileReader fileInput = new FileReader("파일이름");
int data = 0;
while ((data = fileInput.read()) != -1) { //더이상 읽을 값이 없으면 -1 리턴
System.out.print((char)data);
}
fileInput.close();
바이트 기반 스트림과 마찬가지로, Reader에도 성능을 개선할 수 있는 BufferedReader가 있다
FileReader fileInput = new FileReader("파일이름");
BufferedReader bufferedInput = new BufferedReader(fileInput);
int data = 0;
while ((data = bufferedInput.read()) != -1) { //더이상 읽을 값이 없으면 -1 리턴
System.out.print((char)data);
}
fileInput.close();