파일 입출력 BufferedWriter, BufferedReader

김하영·2023년 4월 10일
0

자바 쫌쫌따리

목록 보기
4/5

IOException

BufferedWriter, BufferedReader를 쓸때는 IOException예외를 꼭 처리해 줘야 한다!

BufferedReader 사용법

여러 메소드가 있지만 주로 사용하는 메소드는 readLine()과 close()이다.

  • readLine() : 입력으로 들어온 데이터를 한줄로 읽어서 String으로 바꿔주는 메소드 - 무조건 한줄로 읽어옴. 따라서 StringTokenizer나 split을 사용하여 문자열을 잘라줄 필요가 있다.
  • close(): reader 닫기

파일 내용 콘솔에 출력하는 코드

// 파일 내용 콘솔에 출력
public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new FileReader("./memo.txt"));
        while(true){
            String line = br.readLine();
            if(line == null){
                break;
            }
            System.out.println(line);
        }
        br.close();
    }
}

콘솔로부터 입력받은 값을 읽어서 배열을 생성하는 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

// 배열의 사이즈와 배열의 데이터를 입력으로 받아 배열을 만드는 코드
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 선언
		int N = Integer.parseInt(br.readLine()); // readLine으로 받은 입력 데이터 String이므로 int로 변경.
		int[] arr = new int[N];

		StringTokenizer st = new StringTokenizer(br.readLine()); // 한줄 단위로 읽어오므로 각 데이터를 구하기 위해 문자열을 자름
		for (int i = 0; i < N; i++) {
			arr[i] = Integer.parseInt(st.nextToken()); // 배열에 잘라온 문자열을 int로 바꿔서 데이터를 지정해줌
		}

		br.close(); // 사용한 bufferedReader자원을 해제해줌.
	}

}

BufferedWriter 사용법

여러가지 메소드가 있지만 자주 사용되는 메솓는 write(), flush(), close()가 있다.

  • write(): 출력할 내용을 담아 파일이나 콘솔에 쓰기
  • flush(): buffer 비워주기+콘솔에 출력
  • close(): writer닫기

파일에 내용 쓰는 코드

try{
	File file = new File("index.html");
	BufferedWriter writer = new BufferedWriter(new FileWriter(file));
	writer.write("hello world!");
	writer.close();
} catch (IOException e){
	e.printStackTrace();
}

내용을 콘솔에 출력하는 코드

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class Main {

	public static void main(String[] args) throws IOException {

		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 콘솔로 내용을 출력하도록 지정
		bw.write("Hello World");
		bw.flush(); // write로 담은 내용 출력 후, 버퍼를 비움.
		bw.close(); 
	}
}

참고자료

https://steady-coding.tistory.com/184

profile
백엔드 개발자로 일하고 싶어요 제발

0개의 댓글