본문 바로가기
Java

자바 스트림(Stream)과 파일 입출력(File I/O) - java.io.File

by 오늘이 내가 된다. 2022. 1. 13.

스트림

다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것

- 파일로부터 입력을 받는 스트림을 입력스트림,

- 출력을 보내는 스트림을 출력스트림

- 바이너리 형태로 데이터를 입출력하는 스트림을 이진스트림,

- 문자형태로 입출력하는 스트림을 텍스트스트림

 

스트림만들기

중간연산(여러번) -> 최종연산(한번)

=> (순서대로) 중복제거, 5개 자르기, 정렬

=> [하나씩 꺼내서 출력하기]

 

 

- 스트림은 데이터 소스로부터 데이터를 읽기만할 뿐 변경하지 않음 (원본은 그대로)

출처 :  http://www.codechobo.com

- 스트림은 Iterator처럼 일회용이다. (필요하면 다시 스트림 생성)

- 최종 연산 전까지 중간연산이 수행되지 않는다. (지연된 연산)

- 스트림은 작업을 내부 반복으로 처리한다.

- 스트림의 작업을 병렬로 처리 (병렬스트림)

- 파일을 라인(줄바꿈) 단위로 읽어서 사용

 

입출력(I/O)

FileReader & FileWriter

- 문자기반의 파일 입출력. 텍스트 파일의 입출력에 사용

 

BufferedReader & BufferedWriter

- 입출력 효율을 높이기 위해 버퍼(char[])를 사용하는 보조 스트림

- 라인(line)단위의 입출력이 편리하다.

 

InputStreamReader & OutputStreamWriter

- 바이트기반 스트림을 문자기반 스트림 처럼 쓸 수 있게 해줌

- 인코딩(encoding)을 변환하여 입출력을 할 수 있게 해줌

 

 

 

이클립스에서 파일생성, 출력하기

 

우선 파일을 생성하기 이전에 경로를 설정하였다.

filetest라는 폴더를 생성 (기존 프로젝트 바로 하위에 지정하였음)

 

 

파일이 있는 경우 파일의 데이터를 출력

파일이 없는 경우 파일을 생성

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.stream.Stream;

public class FileExam {

	public static void main(String[] args) {
		FileExam fe = new FileExam();
		try {
			fe.createFile();
		} catch (FileNotFoundException e) {
			// 파일을 찾을 수 없을 경우 예외처리
			System.out.println("해당 파일을 찾을 수 없음");
		} catch (IOException e) {
			// 입출력 예외처리
		}
	}

	// 파일 생성하기
	public void createFile() throws FileNotFoundException,IOException {
		File file = new File("filetest/test.txt");
		
		if(file.exists()) {
			System.out.println(file.getName() + "파일이  존재합니다.");
			FileReader fr = new FileReader(file); // 해당 파일을 찾아보고 없을 경우 예외처리
			BufferedReader br = new BufferedReader(fr);
			
			Stream<String> lines = br.lines();
			lines.forEach(System.out::println);
			
			br.close();
			fr.close();
		} else {
			System.out.println("파일이 존재하지 않습니다.");
			System.out.println("파일을 생성합니다.");
			file.createNewFile();
		}
	}
}
더보기

[출력]

파일이 존재하지 않습니다.
파일을 생성합니다.

이클립스에서 바로 변화가 나타나지 않는데,

이 경우에 해당 폴더에서 [마우스 오른쪽버튼] -> [Refresh] 를 눌러야 한다.

더보기
변경 전
변경 후

 

해당 파일을 열어보자

해당 파일을 이클립스에서 쉽게 파일을 찾는 방법은

[해당파일 우클릭] -> [Show In] -> [System Explorer] 클릭

해당 파일이 있는 파일 탐색기를 열어준다.

 

해당 파일에 열어 글을 적고 저장

 

다시 컴파일을 하면

처음에 파일이 없었을 경우 else 구문을 돌았다면

현재는 파일이 있으므로 if 구문을 동작할 것이다.

 

잘 동작하는 것을 볼 수 있다.

댓글