파일의 입출력
입출력의 방식 중 파일로 출력하는 방법
파일 입출력을 알기전 스트림(stream)에 대한 개념을 알고 넘어가야 한다.
스트림이란 한곳에서 출발한 데이터가 다른쪽으로 데이터를 전달받기위해서는 두개의 대상을 연결하고 전송하는 것이 필요한데 이를 스트림이라고 한다. (컴퓨터의 내,외부 장치와(키보드 마우스 등등) 프로그램간의 데이터를 주고 받는것)
파일 입출력중 출력을 하기위한 키워드는 아래 3가지가 존재한다.
FileOutputStream...
FileWriter...
PrintWriter...
입력을 받기 위한 방법으로는 아래 2가지가 존재한다.
FileputStream...
BufferedReader...
실습해보기!
파일 입출력중 출력을 먼저 실습해볼건데 가장먼저 사용할 건 FileWriter 이다.(3가지중 아래 2가지만 실습을 진행했다.)
FileWriter를 생성할 때에는 매개변수로 어떤파일을 생성할 건지 이름을 작성하는데 ./ 는 현재폴더라는 의미를 가지고 위의 ./memo.txt 는 현재폴더에 memo라는 이름의 txt파일을 생성한다는 의미를 가진다.
그리고 파일쓰기가 완료되면 .close()로 파일을 닫아주어야 한다.(중요!)
이제 파일안에 데이터를 넣었는데 String로 문자열을 넣었다. 넣어야할 데이터를 작성하고 데이터를 넣는 키워드인 .write()를 작성해 데이터를 넣어줄 수 있다.
헤드라인과 오늘의 날씨 맑음 이란 문자열을 memo에 넣었고 실행을 하면
왼쪽의 파일들을 보면 프로젝트에 없던 txt파일이 생성되어 있는걸 확인할 수 있는데 이 파일을 열어보면
내가 넣은 데이터들이 txt 파일에 있는걸 확인할 수 있었다.
다음으로 PrintWriter로 똑같은 방법을 해보았다.
PrintWriter도 마찬가지로 객체를 생성하고 매개변수안에 파일명을 적어주는데 FileWriter와 마찬가지로 이름은 동일하게 잔행했다.
PrintWriter는 데이터를 넣을때 \n이라는 키워드를 넣지않고 println을 통해 줄봐꿈을 해줄수 있으며 FileWriter와 동일하게 .close()로 닫아주어야 한다.
이제 실행을하고 memo파일이 생성되어있는지 확인하면
아까와 동일하게 파일이 생성이 되고 넣은 데이터가 잘 들어가 있는 모습을 보인다.
이제 생성한 txt파일에 내용을 이어쓰기 할수 있는 방법을 배웠는데
FileWriter로 이어쓰기 하는 방법은
객체를 생성하고 파일명을 쓰는 것 까진 동일하지만 마지막 append true의 뜻은 이어쓰기를 허용하겠다 라는 의미를 가진다고 한다.
전과 같이 memo에 넣어줄 데이터를 만들어서 write로 memo에 넣어준후 실행을 하면
데이터가 이어스 들어오는 걸 확인할 수 있다.
다음으로 PrintWirter로 이어쓰기를 하기위해서는
PrintWirter로 객체를 생성하는데 매개변수안에 FileWriter를 넣어 주어야 한다.
이후 넣어줄 데이터를 만들고 아까와 동일하게 close로 닫아주면 된다.
이제 실행하고 결과를 보면
역시 이어서 데이터가 들어온걸 확일할 수 있다.
마지막으로 파일로부터 데이터를 읽어오는 방법을 배웠는데(위에서 쓴 2가지 키워드를 사용)
위에서 말한 BufferedReader로 데이터를 입력받아올 경우에는 객체를 생성하고 콘솔로 입력을 받을때 사용했던 System.in 이 아닌 FileReader를 통해 어떤 데이터를 읽을지를 작성해 주면 된다.
데이터를 한줄 읽어오긴 위해서는
.readLine()을 사용해서 읽어오면 되지만 내가 만든 4줄의 txt를 모두 읽어오기 위해서는 어떤 방법을 사용하냐면
반복문으로 무한루프를 만들어서 데이터를 읽고 만약 읽어온 데이터가 아무것도 없으면 반복문을 탈출하고 그게 아니라면 line을 출력하는 코드를 사용하면 된다고 한다.
또한 항상 파일을 읽어오면 파일을 닫아주는것을 잊어버리면 안되다.
이제 출력된 내용을 확인하기 위해 실행을 하면
콘솔에 출력된 내용이 보이는걸 확인할 수 있었다.
간단한 Quiz 풀기
JamesArthurGosling.txt 파일을 읽은 후 원하는 단어 변경하여 새로 저장해보자.
입력을 받은 txt 파일과 출력할 내용이 들어갈 txt 파일을 선언하고
찾을 단어와 변경할 단어를 입력받기위해 Scanner를 사용해서 작성했다.
이제 파일을 읽고 변경한후 저장하기위한 코드를 작성할 건데
먼저 BufferedReader를 사용해서 객체를 생성하고 읽어올 파일을 작성해 주었고
FileWriter로 객체를 생성해 변경한후 새로 작성하기위한 txt파일을 outputFile로 선언한 파일을 선택했다.
그리고 나서 아까와 마찬가지로 반복문을 작성해서 파일을 한줄씩 읽어오면서 읽어올 파일내용이 없다면 반복문을 종료하는 코드를 작성하고 읽은 line에 내가 찾고자 하는 단어가 있다면 변경하기 위해 .replace를 사용해 새로운 단어로 봐꾸어 주는 코드를 작성하고 .write로 newLine을 바꾸는데 \n을 추가해 줄봐꿈을 같이 해주었다.
이제 코드를 실행해 보면
찾을단어를 입력해주면 되는데 자바를 찾을 단어로 설정하고
찾은 단어 자바를 JAVA로 변경할수 있게 변경할 단어에 작성하고 enter키를 누르면
_edit 파일에 자바가 JAVA로 변경되어 저장되는 모습을 확일할 수 있다.
오늘은 quiz를 풀때 아직 햇갈리는 부분이 많아 강의를 많이 참고하게 되었고 아직 많이 익숙하지 않은 문법들이 많음을 다시금 꺠달을 수 있었다.
'백엔드 > JAVA' 카테고리의 다른 글
JAVA 컬렉션 프레임워크 (0) | 2023.03.28 |
---|---|
JAVA 예외 처리 (0) | 2023.03.27 |
JAVA 내부 클래스 (0) | 2023.03.23 |
JAVA 인터페이스 (0) | 2023.03.22 |
JAVA 추상 클래스 (0) | 2023.03.22 |
댓글