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

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

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. }  

 

번호 제목 글쓴이 날짜 조회 수
347 java.util.Optional 에서의 map() 함수의 이해 황제낙엽 2026.06.24 666
346 linux(ubuntu) 의 jdk 21 이 설정된 환경에서 jdk 17 로 다운그레이드 절차 황제낙엽 2025.09.22 1532
345 [ChatGPT] javax.* 패키지와 jakarta.* 패키지의 혼합 사용 방안 황제낙엽 2025.04.15 2459
344 [ChatGPT] *.servlet.http.HttpServlet 클래스를 사용할 수 있는 주요 WAS 목록 황제낙엽 2025.04.14 2038
343 [ChatGPT] JDBC API에서 java.sql과 javax.sql 패키지의 차이점 황제낙엽 2025.01.31 2218
342 jakarta.servlet 패키지를 이용한 File Upload 구현 (2024.03.03, Servlet 5.0) 황제낙엽 2025.01.02 2310
341 [ChatGPT] Java EE가 Jakarta EE로 전환 황제낙엽 2025.01.01 2525
340 [ChatGPT] File.delete() 함수로 파일 삭제가 되지 않는 경우 황제낙엽 2024.12.10 2809
339 [ChatGPT] <jsp:include>에서 flush="true"를 설정시의 몇 가지 문제점 과 대안 황제낙엽 2024.07.19 2493
338 [Copilot] JSP, Servlet, web.xml, mysql 한글 설정 황제낙엽 2024.07.12 2555
337 Base64 클래스의 encode, decode 에서 URL-safe 황제낙엽 2024.07.10 2624
336 [Copilot] JSP 에서 다른 페이지를 현재 페이지에 포함시키는 문법 (include) 황제낙엽 2024.06.26 2570
335 Exception 출력에 대한 고찰 황제낙엽 2024.06.10 2198
334 google-auth-library-oauth2-http 라이브러리 다운로드 황제낙엽 2023.11.19 4025
333 firebase-admin-java 라이브러리 다운로드 (firebase admin sdk library) 황제낙엽 2023.11.19 2805
332 Enum 활용 (개인블로그, Effective Java) file 황제낙엽 2023.11.02 2759
331 Enum 활용 (우아한기술블로그) file 황제낙엽 2023.11.02 2790
330 servlet name 에 camel case 를 사용해서는 안되는 이유 황제낙엽 2023.10.24 2508
329 org.apache.commons.fileupload.servlet.ServletFileUpload 이용 예시 황제낙엽 2023.08.25 3336
328 ServletFileUpload.parseRequest() 실행 결과 리스트가 비어있는 오류 황제낙엽 2023.08.25 2935