개요
우리가 프로그램을 만들면서, 데이터를 파일로 저장하거나, 파일에서 데이터를 읽고 싶을 때가 있다. 이때 우리는 스트림(Stream)이라는 통로를 이용해 데이터를 읽고,쓸 수 있다.
스트림이란?
네트워크에서 데이터의 흐름이 물과 같다는 의미에서 유래된 단어로, 다양한 입출력 장치에 독립적으로 일관성 있는 입출력을 제공하는 방식을 말한다.
입출력 장치 : 모니터, 키보드, 파일 디스크, 메모리 네트워크
스트림의 구분
대상 기준으로 구분
스트림은 데이터의 흐름이므로, 한 방향으로 밖에 흐르지 못한다. 즉 입력과 출력 둘 다 다르는 스트림은 없다는 뜻이다.
입력 스트림 : 대상으로 부터 자료를 읽어 들이는 스트림
- FileInputStream, FileReader, BufferedInputStream, BufferedReader 등등
출력 스트림 : 대상으로 자료를 출력하는 스트림
- FileOutputStream, FileWriter, BufferedOutputStream, BufferedWriter 등등
기능 기준으로 구분
기반 스트림 : 대상에 직접 자료를 읽고 쓰는 기능의 스트림
- FileInputStream, FileOutputStream, FileReader, FileWriter 등등
보조 스트림 : 직접 읽고 쓰는 기능은 없이 추가적인 기능을 더해주는 스트림
- InputStreamReader, OutputStreamWriter, BufferedInputStream, BufferedOutputStream 등등
보조 스트림은 직접 읽고 쓰는 기능은 없으므로 항상 기반 스트림이나 또 다른 보조 스트림을 생성자 매개변수로 포함 함
public class System{
public static PrintStream out;
public static InputStream in;
}
(평소 우리가 편히 쓰는 System.out, System.in 도 입출력 스트림을 활요한 클래스이다!)
사용 예제
FileReader와 FileWriter
public class Example{
File file = new File(파일 이름);
if(!file.exists()) file.createNewFile();
FileWriter fileWriter = new FileWriter(file);
fw.write("Hellow, world!! \n);
fw.close();
FileReader fileReader = new FileReader(file, boolean 파일 이어 쓸지 말지 결정);
while(ture){
char[] buffer = new char[size];
int ret = fr.read(buf);
if(ret==-1) break;
System.out.print(String.valueOf(buf));
}
fr.close();
}
BufferedWirter와 BufferedReader
public class Example{
File file=new File(파일 이름);
if(!file.exists()) file.createNewFile();
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(파일 이름));
bufferedWriter.write("Hello, world!");
bufferedWriter.newLine();
bufferedWriter.write("Hello, world!!");
bufferedWriter.newLine();
bufferedWriter.write("Hello, world!!!");
bufferedWriter.newLine();
bufferedWriter.fluse();
bufferedWriter.close();
BufferedReader bufferedReader=new BufferedReader(new FileReader(파일 이름));
String line=null;
while((line=bufferedReader.readLine())!=null)
System.out.println(line);
br.close();
}
출처
[무료] Do it! 자바 프로그래밍 입문 with 은종쌤 - 인프런 | 강의
비전공자, 문과생도 무릎을 ‘탁!’ 치며 이해하는 20년 경력 명강사의 자바 강의!, - 강의 소개 | 인프런...
www.inflearn.com
'Language > Java' 카테고리의 다른 글
[Java] Garbage Collection (0) | 2023.08.23 |
---|---|
멀티 쓰레드를 사용할 때 주의점과 synchroized를 활용한 쓰레드 동기화 (0) | 2023.04.08 |
스트림(Stream) 이란? (0) | 2022.11.12 |
문자열을 정수로 바꾸기 (0) | 2022.11.12 |