Languages/Java

[HUFS/컴퓨터 프로그래밍] #10 파일 입출력

성중 2021. 3. 5. 14:09

파일 입출력이란?

키보드(표준 입력), 모니터(표준 출력)가 아니라 입·출력을 파일로 처리하는 메소드

서로 교차 활용도 가능 / 파일로 입·출력한다는 점 말고는 별로 다른 점이 없음

 

 

*스트림(stream)

데이터를 송·수신하기 위한 통로

(1바이트를 처리하는 바이트 스트림/ 2바이트를 처리하는 문자 스트림)

표준입출력과 파일입출력은 사용하는 클래스와 메소드가 다르지만 각 메소드의 사용법은 크게 다르지 않다.

단, 파일을 사용하기 위해 ‘파일 열기’ / 사용이 끝난 후에 ‘파일 닫기’를 해줘야 함

이 두 가지 작업이 추가로 이루어져야 함

 

1. 파일 열기(1단계)

우선 파일을 열기 위해선 관련 클래스에서 변수를 선언하고 파일명을 지정해야 함

*파일명 지정시 경로도 정확하게 지정해줘야 함

2. 파일 처리(2단계)

데이터를 쓰거나 파일로부터 데이터를 읽어올 수 있는 상태이다.

 

3. 파일 닫기(3단계)

작업이 끝나면 파일을 정상적으로 닫아야 한다. 이때 닫는 변수는 1단계에서 선언한 변수 이름이다.

#파일을 이용한 입력

입력해야 할 데이터가 지나치게 많아 키보드로 일일이 넣기 어려운 경우!

파일을 이용해 입력해보자 ~ 아주 효율적이다.

메모장의 텍스트 파일(“File Read Sample입니다.”)을 한번 불러와보자.

‘!= -1’을 통해서 파일 전체를 읽게 함

(파일 열기 -> 출력 -> 파일 닫기) 구조를 보여줌

 

?그런데 결과에 한글이 제대로 출력되지 않음

read()는 1바이트씩 읽으므로 영어는O 한글은X

-> 영어는 1바이트이고 한글은 2바이트이기 때문에 한글은 제대로 출력X

 

파일 입력을 배열을 로 바꾸고 배열을 string형식으로 출력해서 해결!

# Scanner를 활용한 파일 읽기

메모장의 텍스트 파일“123 359 2 77 89”의 합계를 내보자

# 파일을 이용한 출력

이번에는 출력 결과를 파일에 저장해보자

-> FileOutputStream과 BufferedWriter클래스를 활용

enter(아스키코드 값:13)치면 while문이 끝나고 byte형 문자가 파일에 적힘

즉, 콘솔 창에 입력한 내용이 지정된 경로의 메모장 파일에 저장됨!