생각을 개발하자, 박진형

[Java] Stream - 텍스트데이터 파일 스트림 본문

Java/java(old post)

[Java] Stream - 텍스트데이터 파일 스트림

imjinbro imjinbro 2017.01.24 02:14

[FileReader] - 텍스트파일의 텍스트(char형)읽기(데이터출력 / 문자스트림)


[메소드]

- read() :파일에 있는 문자 데이터를 한 자씩 읽어서 반환하는 메소드, 반환타입은 char가 아니라 int인데 char의 표현범위를 벗어난 다른정보도 리턴해서더이상 리턴 할 것이 없을 때에는 -1을 리턴하기 때문에 조건문에 명시해두면 무한반복을 멈출 수 있게할 것이다.


- read(char[] arr) : 위의 메소드와는 다르게 스트림 데이터를 바로 반환하는 것이 아니라 파라미터로 받은 문자 배열에 저장함. 앞의 메소드와 똑같이 문자를 다읽었을 때에는 -1을 반환한다. 이 메소드를 사용하기위해서는 문자 배열을 미리 만들어둬야함 앞서 말했다시피 한 자 한 자씩 읽는 것은 매우 효율적이지 못한 것이다. 그래서 한꺼번에 읽어오는 메소드를 사용한다.               


- close : 파일에 대한 데이터 처리를 모두 끝낸 후 파일을 닫아주는 역할을 하는 메소드


[참고]

- api : http://docs.oracle.com/javase/8/docs/api/ 접근 후 FileReader 검색 

=> api를 보면 해당 클래스에서 사용되는 메소드들은 보통 다 상속받은 것

- 사용 시 예외에 대한 처리를 해줘야함 : 해당 메소드에 throw하던지 try/catch문으로 예외처리

- 한 부분의 처리에서 여러가지 Exception이 예상될 때 세부적으로 나눠서 Exception을 예상해야함(파일을 닫을 때 제대로된 순서에 코드를 넣기위함)

   => try문은 하나, catch문은 여러개


[예시]

첫번째 - 파일을 열고 파일에 적힌 문자를 하나씩 읽어 StringBuilder로 문자열 만드는 과정



두번째 - 파일을 열고 파일에 적힌 문자를 하나씩 읽는데, 하나씩 반환되는 데이터를 미리 만들어둔 문자 배열에 저장하고 String 생성자에 넣어 문자열로





[FileWriter] - 텍스트파일의 텍스트쓰기(데이터입력 / 문자스트림)

- char형 데이터쓰기

 

[메소드]

- write(char cbuf[]) : 문자의 배열을 파라미터로 받아 파일에 입력하는 메소드 

- write(String str) : String형 데이터를 파일에다가 입력하는 메소드

- close : 파일을 저장하고 닫는 메소드


[예시]

첫번째 - 기존 파일 존재여부에 상관없이 파일을 새로 만들고 String을 입력함


두번째 - 기존파일에 데이터를 쓰고, 파일이 없을 경우 생성해서 데이터를 입력함