[문자 스트림] 문자단위로 파일내용을 읽은 후 화면으로 출력, 바이트단위처리와 문자단위 처리의 혼합사용
Java/Input/Output Facilities 2013. 2. 11. 10:19다음 코드는 바이트로 파일을 읽어들인 것을 문자단위 처리 클래스로 받아서 다시 바이트 단위클래스에게 출력을 위임하는 예제 코드이다.
즉, 파일의 내용을 읽기위해 FileInputStream(à바이트처리)을 사용하고 화면에 읽어들인 내용을 출력하기 위하여 System.out(PrintStream)(à바이트처리)을 사용한다. 이때 파일의 내용을 읽기위해 문자단위 클래스인 InputStreamReader(à 문자처리)의 메소드를 사용할 것이다.
바이트 단위 IO클래스와 문자단위 IO클래스간의 차이는 바이트단위이냐 또는 문자 단위의 처리이냐 차이뿐인데 중요한 것은 바이트 단위 IO클래스와 문자단위 IO클래스는 완전히 따로 사용하지 않는 다는 것이다.
문자단위 IO 클래스에는 InputStreamReader 와 OutputStreamWriter클래스가 있는데, 이 두가지 클래스는 바이트 단위 IO클래스와 문자단위 IO클래스 간에 다리 역할을 하므로써 서로 협력해서 사용 할 수 있게 해준다.
package ch5;
import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter;
public class StreamReaderTest {
public static void main(String[] args) { if (args.length != 1) { System.out.println("사용법 : java StreamReaderTest 파일명"); System.exit(0); }// if
FileInputStream fis = null; InputStreamReader isr = null; OutputStreamWriter osw = null; try { fis = new FileInputStream(args[0]); isr = new InputStreamReader(fis); osw = new OutputStreamWriter(System.out); char[] buffer = new char[512]; int readcount = 0; while ((readcount = isr.read(buffer)) != -1) { osw.write(buffer, 0, readcount); } } catch (Exception ex) { System.out.println(ex); } finally { try { fis.close(); isr.close(); osw.close(); } catch (Exception e) { } }
} }
|
즉 위의 예제에서는InputStreamReader는 바이트 단위로 읽어 들이는InputStream을 통해 데이터를 읽어들여 문자 단위로 읽어 들이는 방식으로 변형한다는 것이며, OutputStreamWriter는 바이트단위로 쓰는 OutputStream을 이용해서 문자 단위로 쓰는 것을 바이트 단위로 쓰도록 변형한다는 것을 의미한다.
'Java > Input/Output Facilities' 카테고리의 다른 글
[문자 스트림] BufferedReader와BufferedWriter를 이용한 파일복사 (0) | 2013.02.11 |
---|---|
[문자 스트림] FileReader와 FileWriter를 이용한 파일복사 (0) | 2013.02.11 |
[바이트 스트림] 파일이나 배열의 내용을 읽어들여 출력 (0) | 2013.02.11 |
[바이트 스트림] 바이트배열의 사용[ByteArrayInputStream / ByteArrayOutputStream] (0) | 2013.02.11 |
[바이트 스트림] 기본 데이터형(int,float,double,boolean,short,byte 등) 파일에 저장/읽기 (0) | 2013.02.10 |