2008/07 95

문자 스트림 - 텍스트 파일 복사(FileReader, FileWriter)

FileReader와 FileWriter를 이용한 텍스트 파일 복사 ※ 실제로 개발할 때는 파일을 복사하는 프로그램의 작성은 바이트 단위 IO 클래스인 FileInputStream과 FileOutputStream을 이용하는 것이 좋다. 모든 파일이 바이트 단위로 구성되어 있기 때문이다. import java.io.*; public class FileCopy { public static void main(String[] args) { if(args.length != 2){ System.out.println("사용법 : java FileCopy 파일명1 파일명2"); System.exit(0); } //if FileReader fr = null; FileWriter fw = null; try{ fr = ne..

문자 스트림 - FileReader와 FileWriter

FileReader와 FileWriter FileReader와 FileWriter는 FileInputStream, FileOutputStream과 기능이나 사용법이 비슷하다. FileReader와 FileWriter는 각각 InputStreamReader와 OutputStreamWriter의 자식 클래스로 유니코드 문자열과 바이트의 변환 기능을 포함하고 있다. FileReader 생성자 생성자 설명 FileReader(String filepath) throws FileNotFoundException filepath로 지정한 파일에 대한 FileReader 객체를 생성한다. FileReader(File fileObj) throws FileNotFoundException fileObj로 지정한 파일에 대한 ..

문자 스트림 - 파일 내용 읽어 화면 출력(InputStreamReader, OutputStreamWriter)

문자 단위로 파일 내용을 읽어 들여 화면에 출력하기 파일의 내용을 문자 단위로 읽어 들인 후, 문자 단위로 화면에 출력하는 예제다. 파일의 내용을 읽으려고 FileInputStream을 사용하고, 화면에 출력하려고 System.out(PrintStream)을 사용한다. 그렇지만 각각의 클래스들은 바이트 단위의 IO 클래스다. 따라서 문자 단위로 입출력을 하려면 InputStreamReader와 OutputStreamWriter를 이용해서 문자 단위 입출력으로 변환해야 한다. import java.io.*; public class StreamReaderTest { public static void main(String[] args) { if(args.length != 1){ System.out.printl..

문자 스트림 - InputStreamReader과 OutputStreamWriter

InputStreamReader와 OutputStreamWriter InputStreamReader는 Reader를, OutputStreamWriter는 Writer를 상속받는다. 즉, 문자단위 입력에 필요한 클래스다. 하지만 두 클래스는 각각 InpustStream과 OutputStream을 생성자에서 받아들인다. IO 클래스에서 중요한 것은 생성자이다. 생성자에 전달한 인자가 무엇이냐에 따라서 읽어 들여야 할 대상과 써야 할 대상이 달라진다. 즉, InputStreamReader는 바이트 단위로 읽어 들이는 InputStream을 통해 데이터를 읽어 들여 문자 단위로 읽어 들이는 방식으로 변형한다. 그리고 OutputStreamWriter는 바이트 단위로 쓰는 OutputStream을 이용해서 문자 ..

문자 스트림 - Reader와 Writer

Reader와 Writer Reader와 Writer는 문자 단위 입출력 스트림에서 가장 기본이 되는 클래스로써 모두 추상 클래스다. 즉, Reader와 Writer는 객체화가 될 수 없다. Reader와 Writer는 각각 바이트 단위 입출력 스트림인 InpustStream, OutputStream과 사용법이 거의 비슷하다. 틀린 점이 있다면, 바이트 단위 입출력 스트림은 바이트나 바이트의 배열을 읽고 쓰는 것에 비해서, 문자 단위 입출력 스트림은 문자나 문자 배열을 읽고 쓴다. Reader 클래스의 중요 메소드 메소드 설명 abstract void close() throws IOException 문자 입력 스트림을 닫는다. void mark(int limit) throws IOException 문자 ..

바이트 기반 스트림 - 데이타 전달(PipedInputStream, PipedOutputStream)

PipedInputStream과 PipedOutputStream을 이용한 데이타 전달 import java.io.*; class ReadThread extends Thread{ InputStream pi = null; OutputStream po = null; ReadThread( InputStream pi, OutputStream po) { this.pi = pi; this.po = po; } public void run() { int ch; int i; try { for(;;) { i = pi.read(); if (i == -1) { return; } po.write(i); } } catch (Exception e) { } } } class SystemStream { public static void..

바이트 기반 스트림 - PipedInputStream과 PipedOutputStream

PipedInputStream과 PipedOutputStream 유닉스 시스템에 자주 사용하는 기호 중에서 파이프 기호('|')가 있다 유닉스에서 ls(도스의 dir명령)를 실행하면 파일의 목록을 읽어 들여 표준 출력 장치인 모니터에 출력한다. wc 명령은 표준 입력 장치로부터 문자열을 읽어 들여, 문자열의 줄 수, 문자열을 구성하는 단어 수, 문자열의 글자 수를 출력한다. 표준 입력 장치로 입력을 할 때 더 이상 입력을 원하지 않으면 Ctrl + D키를 입력한다. 유닉스 시스템은 정통적으로 작은 프로그램을 선호한다. 유닉스 시스템은 쉘(shell) 프로그래밍과 파이프 기호를 이용하고 작은 프로그램을 연동해서 좀더 강력한 기능을 사용 한다. ls 면령과 wc 명령을 파이프 기호로 연결한다. ls | wc..

바이트 기반 스트림 - 파일이나 배열의 내용을 읽어 들여 출력

파일이나 배열의 내용을 읽어 들여 출력하는 클래스 작성 파일이나 배열의 내용을 읽어 들여 출력하는 클래스를 작성한다. 프로그램을 실행할 때 인자로 'file'을 지정하면 이전에 작성했던 file.dat의 내용을 읽어 들여 화면에 출력하고, 인자를 array로 지정하면 알파벳 소문자가 저장되어 있는 배열의 내용을 읽어 들여 화면에 출력하는 프로그램이다. import java.io.*; public class FileArrayInputStreamTest { public static void print(InputStream in){ byte[] buffer = new byte[512]; int readcount = 0; try { while((readcount = in.read(buffer)) != -1){ ..

바이트 기반 스트림 - 파일 내용을 바이트 배열에 저장한 후 화면에 출력

파일 내용을 바이트 배열에 저장한 후 화면에 출력하기 파일의 내용을 읽어 들여 바이트 배열에 저장한 후, 배열의 내용을 읽어 들여 표준 출력 장치인 화면에 출력하는 예제이다. 프로그램을 작성하다 보면, 여러가지 이유로 파일의 내용을 읽어 들여 바이트를 배열화 시켜야 할 경우가 생긴다. 대표적인 예가 읽어 들인 파일의 일부분을 조작하고자 할 경우다. 다음 예제를 통해 파일의 내용을 바이트 배열화하고, 바이트 배열을 다시 화면에 출력함으로써 ByteArrayInputStream과 ByteArrayOutputStream의 사용법을 익혀본다. 단, JVM이 다루는 힙 메모리보다 큰 배열을 사용할 수 없기 때문에 작성시 주의해야 한다. import java.io.*; public class ByteArrayInp..