11월10일 Day20

여우·2022년 11월 10일
0

공부중

목록 보기
14/38

파일 입출력


파일을 생성하는 코드이다. File이라는 클래스를 import 해주어야 한다.
f1의 경우 상대경로를 입력 함으로써 이클립스 현재 패키지 내에서 텍스트파일 생성이된다.
f2는 절대 경로를 작성한것이고 폴더가 생성이된다.
f3은 f2의 경로에 b텍스트 파일이 생성이 되고
f4는 절대경로 입력, 생성할 텍스트 파일명을 적어둔것이다.

  • 파일의 내용읽어 오기

    먼저 텍스트 파일이 저장되어있는 파일 객체를 생성하고 scanner 객체의 매개면수로 객체를 전달한 후. while문 안에서 hasNextLine() 메서드로 내용을 한줄씩 불러 오게 된다. 불러온 내용을 미리 준비해둔 변수에 차곡 차곡 저장하여 출력 하여준다.

-텍스트 파일에 내용 적기

입력받을 파일이 있는곳을 file 객체로 만들어주고, 그 파일에 FileOutputStream 이라는 객체를 만들어줍니다. 이 FOS 라는 객체는 파일에 연결되는 객체로 파일에 내용을 전달해주는 배관같은 역할을 해주게 됩니다. 문자열의 byte 단위로 전송이 됩니다. 그리고 마지막엔 flush 함수로 남아 있는 데이터를 싹 몰아 넣어주고 끝이 납니다.

  • 텍스트 파일에 내용 적기2

이전과 동일하게 file 객체를 만들고 fos도 만들어준다. fos는 기본 true를 설정하지 않고 false를 하게 되면 내용이 새롭게 덮히게 된다.

OutputStreamWriter는 문자열을 기록하는 클래스이고 UTF-8로 인코딩 설정을 마추어 주고 BufferedWriter 의 매개변수로 전달해서 객체를 생성해주면 된다. 이전 byte 단위는 상당히 작은 단위로 전달이 되는 부분이 전달하는 글자의 양이 많다면 버퍼에 담아서 옮기게 되는게 훨씬 유리 하다.

  • 텍스트 파일에 내용 적기 3

FileWriter의 경우 이전과 다르게 append()메서드로 문자를 적어주고 난뒤 flush()가 필요 없다. flush는 비유 하자면 하나의 컵으로 물을 떠서 다른 양동이로 옮기게 될 때 이 컵이 가득차야만 양동이에 물을 비우는데 컵은 가득 찬 상태가 아닌데 더이상 옮길 데이터가 없어서 멈춰 있을때 지금 컵에 남은 물을 모두 다 부어버리도록 하는 메서드 이다.

활용)

Person 클래스로 main문에 Person 객체들을 생성하고 FileWriter를 생성하여 이 객체들을 toString으로 출력하여 하나씩 파일에 업로드 해줍니다.

그리고 새로운 클래스를 작성하여 여기에는 Scanner 객체로 파일을 불러와서 문자열들을 필요한 부분만 빼내는 작업을 하여 그렇게 받아온 값을 다시 사람 객체로 만들어서 미리 만들어둔 List에 차곡 차곡 대입시켜준후 출력 해주는 식이다.

profile
우당탕탕 지금은 개발중

0개의 댓글