상세 컨텐츠

본문 제목

[Java]FileReader & FileWriter

JAVA Language

by mobile 2012. 9. 28. 00:54

본문

반응형

 FileReader & FileWriter

바이트 입력 스트림과 바이트 출력 스트림의 최상위 클래스는 각각 다음과 같다.

InputStream, OutputStream


이와 유사하게 문자 입력 스트림과 문자 출력 스트림의 최상위 클래스는 각각 다음과 같다.

Reader, Writer


즉 문자 스트림 영역의 Reader는 바이트 스트림 영역의 InputStream에 대응하고, 문자 스트림 영역의 Writer는 바이트 스트림 영역의 OutputStream 에 대응한다. 그리고, 문자 단위 파일 입력 스트림과 출력 스트림은 각각 다음과 같다.

FileReader, FileWriter


즉 바이트 스트림의 FileInputStream, FileOutputStream 은 문자 스트림의 FileReader, FileWriter의 대표적인 메소드.


- public int read() throws IOException

- public abstract int read(char[] cbuf, int off, int len) throws IOException

첫번째 메소드는 파일로 부터 읽어들인 문자 하나를 반환다. 반면 두번째 메소드는 최대 len의 개수 만큼 문자를 읽어들여서 cbuf로 전달된 배열의 인덱스 위치 off에서 부터 문자를 저장한다. 그리고 실제로 읽어들인 문자의 수를 반환한다. 물론 더 이상 읽어 들일 문자의 수를 반환한다. 물론 더 이상 읽어 들인 문자가 존재하지 않는다면 두 메소드 모두 -1을 반환한다. 


다음은 Writer의 대표적인 메소드이다.

- public void write(int c) throws IOException

- public abstract void write(char[] cbuf, int off, int len) throws IOException

첫 번째 메소드는 파일에 하나의 문자를 저장한다. 자바프로그램에서는 문자가 2바이트로 표현되므로, 인자로 전달된 4바이트 데이터 중에서(매개변수 형 int이므로) 상위 2바이트는 무시가 된다. 그렇다고 파일에 2바이트가 저장된다고 판단하면 곤란하다. 두 번째 메소드는 cbuf로 전달된 배열의 인덱스 위치 off에서부터 len 개의 문자를(최대 len개가 아닌, 그냥 len개이다)파일에 저장한다.


 import java.io.FileWriter;

import java.io.IOException;

import java.io.Writer;


public class FileWriterStream {


/**

* @param args

*/

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

// TODO Auto-generated method stub

char ch1 = 'A';

char ch2 = 'B';

Writer out = new FileWriter("hyper.txt");

out.write(ch1);

out.write(ch2);

out.close();

}

}


import java.io.FileReader;

import java.io.IOException;

import java.io.Reader;


public class FileReaderStream {


/**

* @param args

*/

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

// TODO Auto-generated method stub

char[] cbuf = new char[10];

int readCnt;

Reader in = new FileReader("hyper.txt");

readCnt = in.read(cbuf, 0, cbuf.length);

for(int i=0; i < readCnt; i++)

System.out.println(cbuf[i]);

in.close();

}

}


반응형

관련글 더보기

댓글 영역