개발자공부 (2021.11~현재)/Java
스트림(stream)을 이용한 클래스 다루기
purplecloud
2021. 12. 10. 18:37
Java에서 직접 입출력을 하지 않고 스트림이라는 흐름을 통해 파일이나 콘솔을 쉽게 다룰 수 있는데
운영체제에 의해 생성되는 가상의 연결고리, 중간 매개자인 스트림을 생성해주는 클래스에는 총 5가지가 있다.
1. FileInputStream 클래스
- java.io의 가장 기본이 되는 입력클래스
- 입력 스트림(통로)를 생성해줌
- 버퍼를 사용하지 않기 때문에 느릴 수 있음
- 속도문제를 해결하기 위해 버퍼를 사용하는 다른 클래스와 같이 사용하는 것이 일반적
--> read(): 스트림을 통해 byte단위로 데이터를 읽어옴
2. FileOutputStream 클래스
- java.io의 가장 기본이 되는 출력클래스
- 출력 스트림(통로)를 생성해줌
- 버퍼를 사용하지 않기 때문에 느릴 수 있음
- 속도문제를 해결하기 위해 버퍼를 사용하는 다른 클래스와 같이 사용하는 것이 일반적
--> write(): 스트림을 통해 데이터를 씀(내보냄)
3. FileReader 클래스
- FileInputStream 과 유사
- 문자 스트림으로서 문자 단위의 바이트 변환 기능을 가지고 있음
- 바이트 단위가 아닌 문자 단위로 입출력을 실행
4. FileWriter 클래스
- FileOutputStream 과 유사
- 문자 스트림으로서 문자 단위의 바이트 변환 기능을 가지고 있음
- 바이트 단위가 아닌 문자 단위로 입출력을 실행
5. PrintWriter 클래스
- 문자열을 출력하는 스트림 Writer 속성을 가진 클래스
- OutputStream 의 자식 클래스며 byte 단위출력 클래스인 PrintStream의 Print 메소드를
모두 구현하여 사용할 수 있음
printWriter를 사용하여 배열에 저장된 값을 내보내어 txt파일로 자동으로 저장하게 만드는 기능을 구현하였다.
여전히 outputStream을 이용하여 통로를 만들어주어야 한다.
배열의 길이만큼 무한으로 돌면서 해당 인덱스의 value를 output3.txt에 내보내고 저장한다.
이 프로그램을 돌리고 나면 자동으로 output3.txt가 저장되어 있다.
import java.io.FileOutputStream;
import java.io.PrintWriter;
public class File7 {
public static void main(String[] args) {
String file1= "output3.txt";
String[] arr={"김사과","오렌지","반하나","이메론"};
try{
// FileOutputStream fos= new FileOutputStream(file1);
// PrintWriter pw= new PrintWriter(fos);
// ===
PrintWriter pw= new PrintWriter(new FileOutputStream(file1));
for(int i=0; i<arr.length;i++){
System.out.println(arr[i]+" ");
pw.println(arr[i]);
}
pw.close(); // 스트림 사용후 마지막에는 닫아줘야 올바르게 파일이 저장된다.
}catch (Exception e){
e.printStackTrace();
}
}
}