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

황제낙엽 2007.07.16 08:05 조회 수 : 454 추천:126

sitelink1  
sitelink2  
sitelink3  
sitelink4  
sitelink5  
sitelink6  
1. 예제 소스 환경 : Tomcat 5.0, JDK1.6.0




5. FileOutputStream 클래스와 FileInputSream 클래스
    파일에 바이트 스트림을 출력하고, 파일에서 바이트 스트림을 읽어들이는 프로그램이다.

·미리보기 | 소스복사·
  1. import java.io.FileOutputStream;   
  2. import java.io.IOException;   
  3.   
  4. public class FileOutputStreamDemo {   
  5.     public static void main(String args[]) throws IOException {   
  6.         FileOutputStream fos = new FileOutputStream("c:/FileOutputStreamDemo.txt");   
  7.         //바이트 스트림 파일을 출력하기 위한 객체 fos 생성   
  8.        
  9.         for(int i=0; i<5; i++) {   
  10.             fos.write(i);          
  11.         }   
  12.         fos.close();   
  13.         System.out.println("지정한 파일명으로 ByteStreamFile을 생성하였습니다.");   
  14.     }   
  15. }  
·미리보기 | 소스복사·
  1. import java.io.FileInputStream;   
  2. import java.io.IOException;   
  3.   
  4. public class FileInputStreamDemo {   
  5.     public static void main(String args[]) throws IOException {   
  6.         FileInputStream fis = new FileInputStream("c:/FileOutputStreamDemo.txt");   
  7.         //바이트 스트림 입력을 위한 객체 fis 생성   
  8.         System.out.println("지정한 파일로부터 바이트 스트림을 입력받아 화면에 출력합니다.");   
  9.         int i;   
  10.         while((i = fis.read()) != -1) {   
  11.             System.out.println(i);   
  12.         }      
  13.         fis.close();   
  14.     }   
  15. }  

6. BufferedOutputStream 클래스와 BufferedInputStream 클래스
    위의 FileOutputStream 클래스와 FileInputSream 클래스의 예제를 BufferedOutputStream 클래스와 BufferedInputStream 클래스를 이용하여 재작성하였다.
·미리보기 | 소스복사·
  1. import java.io.BufferedOutputStream;   
  2. import java.io.FileOutputStream;   
  3. import java.io.IOException;   
  4.   
  5. public class BufferedOutputStreamDemo {   
  6.     public static void main(String args[]) throws IOException {   
  7.         FileOutputStream fos = new FileOutputStream("c:/BufferedOutputStreamDemo.txt");   
  8.         BufferedOutputStream bos = new BufferedOutputStream(fos);   
  9.         //버퍼를 사용하여 파일을 출력하기 위한 객체 bos 생성   
  10.        
  11.         for(int i=0; i<5; i++) {   
  12.             bos.write(i);   
  13.         }   
  14.         bos.close();   
  15.         System.out.println("버퍼를 사용하여 파일을 생성.");   
  16.     }   
  17. }  
·미리보기 | 소스복사·
  1. import java.io.BufferedInputStream;   
  2. import java.io.FileInputStream;   
  3. import java.io.IOException;   
  4.   
  5. public class BufferedInputStreamDemo {   
  6.     public static void main(String args[]) throws IOException {   
  7.         FileInputStream fis = new FileInputStream("c:/BufferedOutputStreamDemo.txt");   
  8.         BufferedInputStream bis = new BufferedInputStream(fis);   
  9.         //버퍼를 사용하여 파일을 입력하기 위한 객체 fis 생성   
  10.   
  11.         System.out.println("버퍼를 사용하여 파일로부터 입력하여 콘솔에 출력");   
  12.         int i;   
  13.         while((i = bis.read()) != -1) {   
  14.             System.out.println(i);   
  15.         }   
  16.         bis.close();   
  17.     }   
  18. }  

7. DataOutputStream 클래스와 DataInputStream 클래스
    자바 기본 자료형 데이터를 바이트 스트림으로 출력하여 파일로 저장하고, 파일의 바이트 스트림을 입력받아 자바의 기본 자료형 데이터를 화면에 출력하는 프로그램이다.
    두개의 프로그램은 기본 자료형 데이터를 출력한 순서와 파일로부터 기본 자료형 데이터를 읽어들이는 순서가 같아야 정확한 결과를 출력한다.
·미리보기 | 소스복사·
  1. import java.io.DataOutputStream;   
  2. import java.io.FileOutputStream;   
  3. import java.io.IOException;   
  4.   
  5. public class DataOutputStreamDemo {   
  6.     public static void main(String args[]) throws IOException {   
  7.         FileOutputStream fos = new FileOutputStream("c:/DataOutputStreamDemo.txt");   
  8.         DataOutputStream dos = new DataOutputStream(fos);   
  9.         //기본 자료형 데이터를 바이트 스트림으로 출력하기 위한 객체 dos 생성   
  10.        
  11.         dos.writeBoolean(false);   
  12.         dos.writeByte(Byte.MAX_VALUE);   
  13.         dos.writeChar('김');   
  14.         dos.writeDouble(Double.MAX_VALUE);   
  15.         dos.writeFloat(Float.MAX_VALUE);   
  16.         dos.writeInt(Integer.MAX_VALUE);   
  17.         dos.writeLong(Long.MAX_VALUE);   
  18.         dos.writeShort(Short.MAX_VALUE);   
  19.         fos.close();   
  20.         System.out.println("파일 생성");   
  21.     }   
  22. }  
·미리보기 | 소스복사·
  1. import java.io.DataInputStream;   
  2. import java.io.FileInputStream;   
  3. import java.io.IOException;   
  4.   
  5. public class DataInputStreamDemo {   
  6.     public static void main(String args[]) throws IOException {   
  7.         FileInputStream fis = new FileInputStream("c:/DataOutputStreamDemo.txt");   
  8.         DataInputStream dis = new DataInputStream(fis);   
  9.         //바이트 스트림으로 부터 자바의 기본 자료형 데이터를   
  10.         //읽기 위한 dis 객체 생성   
  11.         System.out.println("파일 읽기");   
  12.        
  13.         System.out.println(dis.readBoolean());   
  14.         System.out.println(dis.readByte());   
  15.         System.out.println(dis.readChar());   
  16.         System.out.println(dis.readDouble());   
  17.         System.out.println(dis.readFloat());   
  18.         System.out.println(dis.readInt());   
  19.         System.out.println(dis.readLong());   
  20.         System.out.println(dis.readShort());   
  21.        
  22.         fis.close();   
  23.     }   
  24. }  

8. ObjectOutputStream 클래스와 ObjectInputStream 클래스
    Data객체를 생성하여 직렬화된 데이터로 파일에 저장하는 프로그램이다.
    객체를 직렬화된 데이터로 파일에 저장하기 위해 FileOutputStream 클래스와 ObjectOutputStream 클래스를 이용하였다. 직렬화된 데이터 파일은 확장자가 항상 *.ser 이어야 한다.
    이 프로그램은 현재 날짜를 가진 Data 객체를 s_data.ser 파일에 직렬화된 데이터로 저장한다.
·미리보기 | 소스복사·
  1. import java.io.FileOutputStream;   
  2. import java.io.IOException;   
  3. import java.io.ObjectOutputStream;   
  4. import java.util.Date;   
  5.   
  6. public class ObjectPersistenceWrite {   
  7.     Date s_date;   
  8.     ObjectOutputStream objectout;   
  9.        
  10.     public ObjectPersistenceWrite() {   
  11.         s_date = new Date(); //생성자에서 날짜 객체를 생성   
  12.         objectout = null;   
  13.     }   
  14.        
  15.     public void write(String f_name) {   
  16.         try {   
  17.             FileOutputStream f_out = new FileOutputStream(f_name);   
  18.             //파일에 저장하기 위해 파일 출력 스트림 객체 생성   
  19.             objectout = new ObjectOutputStream(f_out);   
  20.             //객체를 파일에 출력하기 위한 스트림 객체 생성   
  21.             System.out.println("직렬화된 데이터로 저장된 Date 객체 : " + s_date);   
  22.             objectout.writeObject(s_date);   
  23.             //writeObject() 메소드를 이용하여 Date 객체를 직렬화된 데이터로 파일에 저장   
  24.             objectout.close();   
  25.         }catch(IOException e) {   
  26.             e.printStackTrace();   
  27.         }   
  28.     }   
  29.        
  30.     public static void main(String args[]) {   
  31.         ObjectPersistenceWrite od = new ObjectPersistenceWrite();   
  32.         od.write("c:/s_data.ser");   
  33.         //s_data.ser 파일에 저장. 직렬화된 파일은 확장자가 항상 *.ser 이어야 한다.   
  34.         System.out.println("파일 저장 완료");   
  35.     }   
  36. }  
·미리보기 | 소스복사·
  1. import java.io.FileInputStream;   
  2. import java.io.IOException;   
  3. import java.io.ObjectInputStream;   
  4. import java.util.Date;   
  5.   
  6. public class ObjectPersistenceRead {   
  7.     Date s_date;   
  8.     Date new_date;   
  9.     ObjectInputStream objectin;   
  10.        
  11.     public ObjectPersistenceRead() {   
  12.     new_date = new Date();   
  13.     objectin = null;   
  14.     }   
  15.        
  16.     public void read(String f_name) {   
  17.     try {   
  18.         FileInputStream f_in = new FileInputStream(f_name);   
  19.         objectin = new ObjectInputStream(f_in);   
  20.         //직렬화된 데이터 파일로부터 데이터를 읽기 위한 스트림 객체 생성   
  21.         s_date = (Date)objectin.readObject();   
  22.         //객체를 읽어 Date 타입으로 형 변환   
  23.         System.out.println("직렬화된 데이터로부터 읽은 Date 객체 : " + s_date);   
  24.         System.out.println("현재 시점에서 생성된 Date 객체 : " + new_date);   
  25.     } catch (IOException e) {   
  26.         e.printStackTrace();   
  27.     } catch (ClassNotFoundException nfe) {   
  28.         nfe.printStackTrace();   
  29.     }   
  30.     }   
  31.        
  32.     public static void main(String args[]) {   
  33.     ObjectPersistenceRead id = new ObjectPersistenceRead();   
  34.     id.read("c:/s_data.ser");   
  35.     //직렬화된 파일로부터 읽는다.   
  36.     }   
  37. }  

9. StreamTokenizer 클래스
    token.txt 파일에 저장된 데이터를 읽어들여 토큰으로 분리하는 프로그램이다. 이 프로그램은 영문 소문자 a부터 z까지를 공백으로 취급하고 있다.
·미리보기 | 소스복사·
  1. import java.io.BufferedReader;   
  2. import java.io.FileReader;   
  3. import java.io.IOException;   
  4. import java.io.StreamTokenizer;   
  5.   
  6. public class StreamTokenizerDemo {   
  7.        
  8.     public StreamTokenizerDemo() {   
  9.        
  10.     }   
  11.        
  12.     public static void main(String args[]) throws IOException {   
  13.     FileReader fr = new FileReader("c:/token.txt");   
  14.     //파일로부터 입력받기 위한 객체 fr 생성   
  15.     BufferedReader br = new BufferedReader(fr);   
  16.     //버퍼를 이용하기 위해 객체 br 생성   
  17.     StreamTokenizer st = new StreamTokenizer(br);   
  18.     //토큰으로 분리하기 위해 객체 st 생성   
  19.     st.whitespaceChars('a','z');   
  20.     //영문 소문자 a-z까지를 공백으로 취급   
  21.        
  22.     while(st.nextToken() != StreamTokenizer.TT_EOF) {   
  23.         //다음 토큰을 읽는다.   
  24.         switch(st.ttype) {   
  25.             case StreamTokenizer.TT_WORD:   
  26.                 System.out.println(st.lineno() + " 단어) " + st.sval);   
  27.                 break;   
  28.             case StreamTokenizer.TT_NUMBER:   
  29.                 System.out.println(st.lineno() + " 숫자) " + st.nval);   
  30.                 break;   
  31.             default:   
  32.                 System.out.println(st.lineno() + " 단어,숫자 아님) " + (char)st.ttype);   
  33.         }   
  34.     }   
  35.     }   
  36.        
  37. //    token.txt의 내용 ################   
  38. //       
  39. //    알기 쉽게 해설한 자바 99.9!!   
  40. //    JAVA 튜토리얼 .....   
  41. //    Complete Reference JAVA ..   
  42. //    core java BY CORNELL   
  43. }  

 

번호 제목 글쓴이 날짜 조회 수
103 J2SE 5.0 - 제네릭(GENERIC) 황제낙엽 2007.08.27 389
102 Cookie Test file 황제낙엽 2007.08.27 280
101 쿠키 유틸리티 클래스 CookieBox 만들기 file 황제낙엽 2007.08.27 420
100 통합을 위한 요소 기술, Java와 XML 황제낙엽 2007.08.27 419
99 중복 로그인 제한 기법에 대하여 황제낙엽 2007.08.23 457
98 interface와 abstract클래스의 차이점 황제낙엽 2007.07.28 520
97 javadoc - The Java API Documentation Generator 황제낙엽 2007.07.25 574
» 자바의 I/O 예제 [3] file 황제낙엽 2007.07.16 454
95 자바의 I/O 예제 [2] file 황제낙엽 2007.07.14 292
94 계층형(답변형) 게시판 로직(최근 답변 하단으로) 황제낙엽 2007.07.11 434
93 J2SE 5.0 - 주석(annotation,표식) 개요 황제낙엽 2007.07.03 393
92 include문과 logging 설정 황제낙엽 2007.03.23 551
91 [BPP] 게시판 페이징 로직 분석 - M1.1 - 샘플 다운로드 및 사용법 file 황제낙엽 2007.06.15 440
90 [BPP] 게시판 페이징 로직 분석 - (5) 페이지 계산 file 황제낙엽 2007.06.15 438
89 [BPP] 게시판 페이징 로직 분석 - (4) 쿼리문의 자동완성 file 황제낙엽 2007.06.14 489
88 [BPP] 게시판 페이징 로직 분석 - (3) 검색과 정렬 file 황제낙엽 2007.06.13 354
87 [BPP] 게시판 페이징 로직 분석 - (2) 간단한 페이징 기법 황제낙엽 2007.06.08 826
86 [BPP] 게시판 페이징 로직 분석 - (1) 클래스 목록 file 황제낙엽 2007.06.06 393
85 문자열의 앞뒤space제거처리 성능체크 황제낙엽 2007.06.03 418
84 간단한 서블릿 예제들 file 황제낙엽 2007.05.12 323