메모리에서 읽고,쓰기를 해봤지만 아무래도 가장 직관적이고 이해하기 쉬운 것은 파일에서
읽기,쓰기가 아닐까 합니다. 파일에서 읽고,쓰기를 하는데 사용하는 스트림은
FileReader,FileWriter,FileInputStream,FileOutputStream등이 있습니다.
import java.io.*;
import java.net.*;
/**
* InputStream중에서 파일에서 읽고,쓰기 하는 Stream의 기능을 보여줍니다.
*/
public class FileInputOutput {
public void copy(InputStream is, OutputStream os) throws IOException {
int c = 0;
while((c = is.read()) != -1)
os.write(c);
os.flush();
}
public void copy(Reader r, Writer w) throws IOException {
int c = 0;
while((c = r.read()) != -1)
w.write(c);
w.flush();
}
public static void main(String[] args) {
try {
FileInputOutput fio = new FileInputOutput();
// URL 클래스를 이용해서 www.yahoo.com페이지를 InputStream으로 개방
InputStream is = new URL("http://www.yahoo.com").openStream();
OutputStream os = new FileOutputStream("yahoo.htm");
fio.copy(is,os);
Reader reader = new FileReader("yahoo.htm");
Writer writer = new FileWriter("yahoo.html");
fio.copy(reader,writer);
}
catch(IOException ie) {
ie.printStackTrace();
}
}
}
예제 6 - 7 FileInputOutput.java
예제 6 - 7 FileInputOutput 클래스는 FileInputStream, FileOutputStream의 예를 보여줍니다.
FileInputOutput클래스는 copy메소드를 오버로딩했습니다. 즉, 2가지 형태의 copy가
있는데 메소드의 인자로 바이트스트림을 읽고,쓰는데 적당한 InputStream, OutputStream과
캐릭터스트림을 읽고,쓰는데 적당한 Reader,Writer가 그것입니다.
FileInputOutput클래스의 copy메소드는 InputStream으로부터 데이터를 읽어서
OutputStream으로 쓰기를 하는데 메소드의 이름에서 알수 있듯이 데이터 내용을 복사하는
것입니다.
FileInputOutput의 public static void main(String[] ) 메소드에서는 야후의 홈페이지 내용을
읽어서 “yahoo.htm”이라는 파일로 저장합니다. 그리고 “yahoo.htm”이라는 파일을 읽어서
“yahoo.html” 이라는 파일로 복사합니다.
“yahoo.html”을 메모장으로 열어보면 www.yahoo.com의 홈페이지의 HTML 내용을
볼 수있고, 브라우저로 열어보면 www.yahoo.com의 홈페이지와 같은 내용을 볼수 있을
것입니다.
예제 6 - 7 FileInputOutput클래스에서 볼수 있듯이 FileInputOutput클래스는 InputStream
으로 읽고 OutputStream으로 쓴다는 것에 충실한 셈입니다.
InputStream이 www.yahoo.com 홈페이지의 URL로부터 만들어졌고,OutputStream은
“yahoo.htm”이라는 이름을 가진 파일을 가리킨 셈이 됬으므로, 결국에는 www.yahoo.com
홈페이지의 내용이 "yahoo.htm"이라는 파일에 담겨진 셈이됩니다.
그림 6 - 6 [run FileInputOutput]
'자바 Basic > 입출력(I/O)' 카테고리의 다른 글
자바공부-10.기능성 읽고,쓰기 (0) | 2007.12.11 |
---|---|
자바공부-9.자유로운 쓰기 (0) | 2007.12.11 |
자바공부-7.메모리에서 읽고쓰기 (0) | 2007.12.11 |
자바공부-6.기다리는 읽기와 기다리지않는 읽기 (0) | 2007.12.11 |
자바공부-5.캐릭터 스트림(Reader/Writer) (1) | 2007.12.07 |