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

황제낙엽 2006.12.28 14:20 조회 수 : 348 추천: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   

번호 제목 글쓴이 날짜 조회 수
23 Polymorphism과 Method Overriding에 대한 이야기 황제낙엽 2003.05.15 330
22 자바의 특징 황제낙엽 2003.05.06 450
21 JVM (Java Virtual Machine)에 대한 몇가지 설명 황제낙엽 2003.05.06 210
20 자바설화 황제낙엽 2003.05.03 395
19 XML기반 정보 보호 기술의 대두 황제낙엽 2003.04.22 266
18 인터넷을 통한 자바 기술의 변화 황제낙엽 2003.04.07 493
17 JAVA관련 용어와 기술 황제낙엽 2003.04.05 458
16 UTF-8을 위한 문자열 인코딩처리 관련 황제낙엽 2006.10.06 882
15 Code Conventions for JavaTM Programing Language file 황제낙엽 2006.10.23 518
14 자바에서 UTF-8 개발에 관한 정리 (2) 황제낙엽 2006.10.06 544
13 자바에서 UTF-8 개발에 관한 정리 (1) 황제낙엽 2006.10.06 539
12 일본어 전각 반각 변환 예제 소스 .두번째 [1] file 황제낙엽 2007.01.11 570
11 일본어 전각 반각 변환 예제 소스 .첫번째 file 황제낙엽 2007.01.10 3371
10 환경파일 로드 클래스 구성 (XML파싱) 황제낙엽 2007.01.05 437
9 HttpURLConnection을 사용하여 웹 페이지 액세스하기 (두번째) 황제낙엽 2007.01.05 593
» 자바의 I/O 예제 [1] file 황제낙엽 2006.12.28 348
7 HttpURLConnection 클래스를 이용한 Search 황제낙엽 2006.12.28 671
6 HttpURLConnection을 사용하여 웹 페이지 액세스하기 (첫번째) 황제낙엽 2006.12.28 522
5 Servlet으로 구현한 파일 다운로드(download) 페이지 황제낙엽 2006.12.27 455
4 JSP로 구현한 파일 다운로드(download) 페이지 황제낙엽 2006.12.27 2583