자바I/O 자바의 I/O 예제 [1]

황제낙엽 2006.12.28 14:20 조회 수 : 50 추천:161

sitelink1  
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  
http://www.ezslookingaround.com/blog/tech/?no=531



OutputStream / InputStream : 이들은 추상 클래스로서 바이트 스트림의 입출력을 위한...

                                           |--- FileInputStream       |-- BufferedInputStream
            |---- InputStream ---|--- FilterInputStream ---|
            |                             |--- ObjectInputStream    |-- DataInputStream
            |
Object --
            |
            |                               |--- FileOutputStream      |-- BufferedOutputStream
            |---- OutputStream---|--- FilterOutputStream---|-- DataOutputStream
                                            |--- ObjectOutputStream   |-- PrintStream

: 사실 이게 더 이해하기 쉬울것이다.. 왜냐? InputStream / OutputStream 앞에 prefix를 붙이는것에 따라 구분되므로
더 간단한 형태이지... 편리하기는 Reader / Writer 가 어떤면에선 더 편할 수도 있다.
아무튼 OutputStream 등은.. 스트림바이트의 출력..  Binary data.. byte 단위의 이진데이터이다... (눈으로 확인못한다; )

아웃풋 인풋 의 의미는 아웃풋 류의 클래스는 모두 출력개념(파일출력..등..) 이고 인풋은.. 파일에서부터 입력받은.. 개념이다.


1. FileOutputStream / FileInputStream

: 파일에 바이트 스트림을 출력하고, 바이트 스트림 파일을 읽는 기능
파일로 아웃풋 하겠다... 파일에서 인풋하겠다..
참고로.. 이녀석들은 스트림단위라소 눈에 보이지 않는 문자다;;

[yakmo@fedora java]$ java FileOutputStreamDemo 1111
0
1
2
3
4

지정한 화일명으로 ByteStreamFile을 생성하였습니다.
[yakmo@fedora java]$ cat 1111
[yakmo@fedora java]$ java FileInputStreamDemo 1111
01234지정한 파일로부터 바이트 스트림을 입력받아 화면에 출력하였습니다.
[yakmo@fedora java]$

[yakmo@fedora java]$ cat FileOutputStreamDemo.java
·미리보기 | 소스복사·
  1. import java.io.*;   
  2.   
  3. class FileOutputStreamDemo {   
  4.     public static void main(String args[]) throws IOException {   
  5.                 FileOutputStream fos = new FileOutputStream(args[0]);   
  6.   
  7.                 for(int i=0;i<5;i++) {   
  8.                         fos.write(i);                // write 는 byte  or  int ...   
  9.                         System.out.println(i);   
  10.                 }   
  11.                 fos.close();   
  12.                 System.out.println("지정한 화일명으로 ByteStreamFile을 생성하였습니다.");   
  13.         }   
  14. }  
[yakmo@fedora java]$ cat FileInputStreamDemo.java

·미리보기 | 소스복사·
  1. import java.io.*;   
  2.   
  3. class FileInputStreamDemo {   
  4.     public static void main(String args[]) throws IOException {   
  5.                 FileInputStream fis = new FileInputStream(args[0]);   
  6.                 int i;   
  7.   
  8.                 while( (i=fis.read() ) != -1) {   
  9.                         System.out.print(i);   
  10.                 }   
  11.                 System.out.println("지정한 파일로부터 바이트 스트림을 입력받아 화면에 출력하였습니다.");   
  12.   
  13.                 fis.close();   
  14.         }   
  15.   
  16. }  
[yakmo@fedora java]$


2. DataOutputStream / DataInputStream (자바기본 데이터를 스트림으로 아웃풋하겠다! / 스트림을 입력받아 자바기본데이터형으로읽겠다)

: 자바의 기본 자료형 데이터를 바이트 스트림으로 출력하는 기능을 제공 ( character --> bin )
즉, 자바기본 데이터를 인풋 받아 스트림으로 아웃풋한다는 의미   (데이터를 스트림으로 아웃풋 하겠다!)
/ Input.. 은 반대로 스트림을 읽어서 자바의 기본자료형으로 입력받는 기능..( bin --> character )

이렇게하면 다양한 데이터 형태가 가능해진다!!!



[yakmo@fedora java]$ java DataOutputStreamDemo
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
        at DataOutputStreamDemo.main(DataOutputStreamDemo.java:5)
[yakmo@fedora java]$ java DataOutputStreamDemo dos
[yakmo@fedora java]$ java DataInputStreamDemo dos
false
127

1.7976931348623157E308
[yakmo@fedora java]$


·미리보기 | 소스복사·
  1. import java.io.*;   
  2.   
  3. class DataOutputStreamDemo  {   
  4.     public static void main(String args[]) throws IOException {   
  5.                 FileOutputStream fos = new FileOutputStream(args[0]);        // 우선 bin 으로 파일을쓸 클래스 객체생성   
  6.                 DataOutputStream dos = new DataOutputStream(fos);                // 위의 객체에 자바의일반데이터를 바이너리형태로 고쳐서 넣을 dos 생성, 물론 fos.write(xx) 도 가능함.   
  7.                                                                                                                                 // 하지만 자바 기본데이터형으로 많은 종유의 지원이 가능하다.. write 는 byte or int 뿐이다.   
  8.   
  9.                 dos.writeBoolean(false);   
  10.                 dos.writeByte(Byte.MAX_VALUE);   
  11.                 dos.writeChar('김');   
  12.                 dos.writeDouble(Double.MAX_VALUE);   
  13.                 fos.close();   
  14.         }   
  15. }  



·미리보기 | 소스복사·
  1. import java.io.*;   
  2. class DataInputStreamDemo  {   
  3.     public static void main(String args[]) throws IOException {   
  4.                 FileInputStream fis = new FileInputStream(args[0]);                // bin 파일을 읽어들일 준비..   
  5.                 DataInputStream dis = new DataInputStream(fis);                        // bin을 읽어서 자바 데이터형태로 받을 dis 생성.. 물론 여기서도   
  6.                                                                                                        // 바로 fis.read 할 수 있긴하지만 데이터형이...;   
  7.   
  8.                 System.out.println(dis.readBoolean());   
  9.                 System.out.println(dis.readByte());   
  10.                 System.out.println(dis.readChar());   
  11.                 System.out.println(dis.readDouble());   
  12.   
  13.                 fis.close();   
  14.         }   
  15. }  


3. BufferedOutputStream / BufferedInputStream

BufferedOutputStream(OutputStream outputStream [,int bufSize])
버퍼를 사용하여 스트림을 출력 한다.


BufferedInputStream(InputStream inputstream [,int bufSize])
버퍼를 사용하여 스트림을 입력한다.
*/

[yakmo@fedora java]$ java BufferedOutputStreamDemo bos
버퍼를 사용하여 파일을 생성
[yakmo@fedora java]$ cat bos
[yakmo@fedora java]$ file bos
bos: raw G3 data, byte-padded
[yakmo@fedora java]$


[yakmo@fedora java]$ java BufferedInputStreamDemo bos
0
1
2
3
4
버퍼를 사용하여 파일로부터 입력
[yakmo@fedora java]$


·미리보기 | 소스복사·
  1. import java.io.*;   
  2.   
  3. class BufferedOutputStreamDemo {   
  4.     public static void main(String args[]) throws Exception {  //IOException 해도 되고...   
  5.                 FileOutputStream fos = new FileOutputStream(args[0]);   
  6.                 BufferedOutputStream bos = new BufferedOutputStream(fos);   
  7.   
  8.                 for(int i=0;i<5;i++) {    
  9.                         bos.write(i);   
  10.                 }   
  11.                 bos.close();   
  12.                 System.out.println("버퍼를 사용하여 파일을 생성");   
  13.         }   
  14. }  



·미리보기 | 소스복사·
  1. import java.io.*;   
  2.   
  3. class BufferedInputStreamDemo {   
  4.         public static void main(String args[]) throws Exception {   
  5.                 FileInputStream fis = new FileInputStream(args[0]);   
  6.                 BufferedInputStream bis = new BufferedInputStream(fis);   
  7.   
  8.                 int i;   
  9.                 while( (i=bis.read())!= -1 ) {   
  10.                         System.out.println(i);   
  11.                 }   
  12.                 System.out.println("버퍼를 사용하여 파일로부터 입력");   
  13.                 bis.close();   
  14.         }   
  15. } MORE