전에 공부하였듯 스트림이란 데이터가 이동하는 통로입니다.
https://blue-dot.tistory.com/102
그럼 스트림과 I/O (스트림은 어떤 차이가 있는지 알아볼게요.
스트림은 일방향의 특징을 가지는 데이터의 흐름이기 때문에 input 과 output 을 위한 코드가 따로 존재합니다.
○ 스트림은 주로 어떤 데이터를 흘려 보내서 중간 연산 과정을 사용하여
원하는 형태로 걸러내고 연산할 것인가에 대한 것에 목적을 가진다면,
I/O 스트림 (InputStream, OutputStream) 은 어떻게 입력하고 출력하는지에 대한,
즉 콘솔을 통해 데이터를 입력하고, 콘솔로의 출력을 어떻게 하는지에 대한 표준입출력을 의미합니다.
○ 사용 예시에 차이를 확인하자면, 파일에 저장된 문자열을 꺼내서 컬렉션 인스턴스에 저장하는 것은
I/O 스트림으로 해결해야 할 부분이라면
그 컬렉션 인스턴스에 저장된 문자열 중 길이가 5 이상인 문자열만 출력하는 것은
스트림으로 해결해야 할 부분입니다.
○ 자바에서는 입출력 스트림을 자바 어플리케이션의 실행과 동시에 자동으로 생성해주는데,
별도의 스트림을 생성하는 코드를 구현하지 않아도 아래의 스트림을 사용할 수 있습니다.
- System.in
- System.out
- System.err (System.out 과 같은 역할. 입출력을 콘솔 이외의 다른 대상으로 변경하는 것이 가능합니다.)
파일 대상의 입출력 스트림을 생성할 때 과정은 다음과 같습니다.
○ 입력 스트림(Input Stream) : 실행 중인 자바 프로그램으로 데이터를 읽어들이는 스트림입니다.
InputStream in = new FileInputStream("date.dat"); // 입력 스트림 생성
int data = in.read(); // 데이터 읽어 들임
○ 출력 스트림(Output Stream) : 실행 중인 자바 프로그램으로부터 데이터를 내보내는 스트림입니다.
OutputStream out = new FileOutputStream("date.dat"); // 출력 스트림 생성
out.write(7); // 데이터 7을 파일에 전달
파일 대상 입출력 스트림을 생성하는 예시에 대해서 살펴보겠습니다.
//파일에 입력을 해볼게요.
class Write7ToFile {
public static void main(String[] args) throws IOException {
OutputStream out = new FileOutputStream("data.dat"); // 출력 스트림 생성
out.write(7); // 7을 저장
out.close(); // 스트림 종료
}
}
//파일에 출력을 해볼게요.
class Read7FromFile {
public static void main(String[] args) throws IOException {
InputStream in = new FileInputStream("data.dat"); // 입력 스트림 생성
int dat = in.read(); // 데이터 읽음
in.close(); // 입력 스트림 종료
System.out.println(dat);
}
}
상기의 입출력 스트림은 finally, close 기반으로 개선할 수 있습니다.
'자바 > 자바 입문 공부일지' 카테고리의 다른 글
자바 스크립트(js) 입문 공부 9. createElement & appendChild, value 입력한 값 불러오기 (0) | 2022.11.17 |
---|---|
자바 기초 공부 일지 54. 쓰레드Thread 생성과 쓰레드 동기화 방법 (0) | 2022.11.08 |
자바 기초 공부 일지 52. 버퍼 (작성 수정중) (0) | 2022.11.08 |
자바 기초 공부 일지 51. 리덕션, 맵핑Mapping (Map, faltMap) (작성중) (0) | 2022.11.07 |
자바 기초 공부 일지 50. 스트림Stream, 필터링과 맵핑 (0) | 2022.11.07 |