명품 JAVA Programming 제 8 장 입출력 스트림.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

I/O 프로그래밍 컴퓨터 공학실험(I) 인공지능 연구실.
자바네트워크 제2주 바이트 입출력 스트림, 필터 입출력 스트림 컴퓨터시뮬레이션학과 2014년 봄학기 담당교수 : 이형원
캡스톤 프로젝트(자바) 입출력.
입출력 I/O 유진석.
네트워크 프로그래밍 및 실습.
명품 JAVA Programming.
자바 5.0 프로그래밍.
Java의 정석 제 14 장 입출력(I/O) Java 정석 남궁성 강의
입출력 14.1 java.io 패키지의 개요 14.2 파일과 디렉토리
제9장 입출력과 JNI.
Power Java 제3장 이클립스 사용하기.
최윤정 Java 프로그래밍 클래스 상속 최윤정
10장 예외 Lab 10-1.
명품 JAVA Programming.
파일 입출력에 사용되는 자바 클래스들 JDK 라이브러리의 파일을 다루는 클래스들 파일의 내용을 읽고 쓰는 클래스들
데이터 파일 C 데이터 파일과 스트림(Stream) 텍스트 파일 처리
Java 12장. 입출력 public class SumTest {
8장 자바 입출력.
14.3 문자(character) 스트림과 바이트(byte) 스트림
Lesson 3. 입출력과 제어문.
Chapter 14. 입출력 스트림.
7장 배열 ②.
Lesson 5. 레퍼런스 데이터형.
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
명품 JAVA Programming 제 8 장 입출력 스트림과 파일 입출력.
Lesson 6. 형변환.
명품 JAVA Essential.
5장. 참조 타입.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
DSP Lab. Week 3 My image Doug Young Suh Media Lab. Rm401
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Chapter 10 예외 처리와 파일 입출력 01 예외 처리 02 표준 입출력 03 파일 입출력 예제 모음 요약 연습문제.
명품 JAVA Essential.
파일 입출력 12.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
10장. 예외처리.
CHAP 12. 리소스와 보안.
C#.
13. 연산자 오버로딩.
명품 JAVA Programming.
I/O&socket통신 POWERPOINT & GROUP STUDY 한재희 김상훈 최기람 황인준 이어진.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
Lesson 4. 수식과 연산자.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
24장. 파일 입출력.
Lesson 2. 기본 데이터형.
명품 JAVA Programming.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
01_ C++ 스타일의 입출력 02_ C 스타일의 입출력
에어 조건문.
2장. 변수와 타입.
자바 5.0 프로그래밍.
JA A V W. 06.
CHAP 21. 전화, SMS, 주소록.
제 15 강 문자와 코드 shcho.pe.kr.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
MIDP 네트워크 프로그래밍 ps lab 김윤경.
발표자 : 이지연 Programming Systems Lab.
구조체(struct)와 공용체(union)
Chapter 12 파일 입출력.
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
JSP Programming with a Workbook
7 생성자 함수.
6 객체.
SPL-Duino 블록 편집기 이용하기 전류센서 블록 만들기 SPL-Duino 블록 편집기를 실행합니다.
BoardGame 보드게임 따라가기.
제 10 강 문자 입출력.
Presentation transcript:

명품 JAVA Programming 제 8 장 입출력 스트림

스트림 스트림이란? 데이터의 흐름 입출력 스트림은 입출력 장치와 프로그램 사이의 일련의 데이터 흐름을 의미 입출력 스트림은 입출력 장치와 프로그램 사이의 일련의 데이터 흐름을 의미 스트림을 통해 흘러가는 데이터의 기본 단위는 바이트

스트림의 특징 스트림의 특징 스트림은 단방향이다. 스트림은 선입선출, 즉 FIFO 구조이다. 스트림은 연결될 수 있다. 방향에 따라 입력 스트림과 출력 스트림으로 나뉜다. 스트림은 선입선출, 즉 FIFO 구조이다. 스트림은 연결될 수 있다. 스트림은 지연될 수 있다. 입력 스트림이 흐르는 통로인 파이프가 비어 있다면, 컴퓨터는 읽어 갈 데이터가 없으므로 기다리게 되고, 반대로 출력 스트림이 흐르는 통로인 파이프에 데이터가 꽉 차 있다면 컴퓨터는 빈 공간이 생길 때 까지 기다린다. 프로그램 표준 입력 스트림 System.in에 InputStreamReader 스트림 연결

바이트 스트림 클래스 계층 구조

문자 스트림 클래스 계층 구조

바이트 스트림 바이트 스트림 바이트 스트림 클래스 바이트 단위의 바이너리 값을 읽고 쓰는 스트림 모든 바이트 스트림은 InputStream과 OutputStream의 서브 클 래스 바이트 스트림 클래스 InputStream/OutputStream java.io 패키지에 포함 추상 클래스로서 바이트 입출력 스트림을 나타내는 모든 클래스의 수 퍼 클래스 FileInputStream/FileOutputStream 파일로부터 바이트 데이터를 읽거나 파일로 저장하는 클래스 바이너리 데이터인 raw 데이터의 입출력. DataInputStream/DataOutputStream 자바의 기본 데이터 타입의 값을 바이너리 값으로 입출력 String을 바이너리 값으로 입출력

FileInputStream 사용 예 c:\test.txt 파일로부터 바이트 단위로 읽을 수 있는 바이 트 스트림 생성 파일 전체를 읽어 화면에 출력 FileInputStream fin = new FileInputStream("c:\\test.txt"); FileInputStream fin = new FileInputStream("c:\\test.txt"); int c; while((c = fin.read()) != -1) { // 파일 끝까지 반복하며 한 바이트씩 c에 읽어들인다. System.out.print((char)c); // 바이트 c를 문자로 변환하여 화면에 출력한다. } fin.close(); // 스트림을 닫는다. 더 이상 스트림으로부터 읽을 수 없다.

예제 7-1 : System.ini 파일을 읽어 화면에 출력하기 FileInputStream을 이용하여 사용자 컴퓨터의 windows 디렉터리에 있는 System.ini 파일을 읽고 화면에 출력하라. System.ini 파일은 텍스트 파일이다. import java.io.*; public class FileInputStreamEx { public static void main(String[] args) { FileInputStream in = null; try { // 파일과 연결된 바이트 스트림을 생성 in = new FileInputStream("c:\\windows\\system.ini"); int c; while ((c = in.read()) != -1) { // -1을 만나면 더 이상 입력이 없음 System.out.print((char)c); // 바이트 c를 문자로 변환하여 화면에 출력 } in.close(); //스트림을 닫는다. 더 이상 스트림으로부터 읽을 수 없다. } catch (IOException e) { System.out.println("입출력 오류"); ; for 16-bit app support [386Enh] woafont=dosapp.fon EGA80WOA.FON=EGA80WOA.FON EGA40WOA.FON=EGA40WOA.FON CGA80WOA.FON=CGA80WOA.FON CGA40WOA.FON=CGA40WOA.FON [drivers] wave=mmdrv.dll timer=timer.drv [mci] 키보드에서(ctrl-z를(누르면(입력을(종료한다.

FileOutputStream을 이용한 파일 출력 스트림 c:\test.out 파일에 바이트 단위로 쓸 수 있는 바이트 스 트림을 생성 코드 파일에 데이터 기록 c:\test.out 파일에 기록된 내용 FileOutputStream fout = new FileOutputStream("c:\\test.out"); FileOutputStream fout = new FileOutputStream("c:\\test.out"); int num[]={1,4,-1,88,50}; byte b[]={7,51,3,4,1,24}; for(int i=0; i<num.length; i++) fout.write(num[i]); // 파일에 정수 값을 바이트 정보로 기록한다. fout.write(b); // 파일에 바이트 배열의 내용을 모두 그대로 기록한다. fout.close();

예제 7-2 : FileOutputStream과 DataOutputStream을 이용한 파일 출력 DataOutputStream을 이용하여 자바 기본 데이터 타입 값을 tmp.out 파일에 저장하고 파일의 내부를 살펴보라. import java.io.*; public class DataOutputStreamEx { public static void main(String[] args){ FileOutputStream f = null; DataOutputStream out = null; try { f = new FileOutputStream("c:\\temp\\tmp.out"); out = new DataOutputStream(f); out.writeBoolean(false); // 0x00 출력 out.writeByte(0x33); // 0x33 출력 out.writeShort(0x1234); // 0x1234 출력 out.writeInt(0x5678); // 0x00005678 출력 out.writeLong(0x12abcdef); // 0x0000000012abcdef 출력 out.writeChar('c'); // 0x0063 출력 out.writeDouble(0.12e-3); // long으로 변환 후 0x3f1f75104d551d69 출력 out.writeFloat((float) 3.14); // int로 변환 후 0x4048f5c3 출력 out.writeUTF("가나다라"); // UTF-8로 인코딩 후 0x000ceab080eb8298eb8ba4eb9dbc 출력 out.close(); f.close(); } catch (IOException e) { System.out.println("입출력 오류"); }

예제 실행 결과 - 출력 파일의 내용 출력된 tmp.out 파일은 텍스트 파일이 아니므로 바이너리로 파 일을 열어 16진수 형식으로 보면 다음과 같다.

예제 7-3 : FileInputStream과 DataInputStream을 이용하여 파일로부터 기본 데이터 타입 읽기 DataInputStream을 이용하여 앞의 예제에서 만든 tmp.out 파일을 읽어 값을 화면에 출력하고 앞 예제에서 기록된 대로 읽혀졌는지 확인하라. import java.io.*; public class ReadData { public static void main(String[] args){ FileInputStream f = null; DataInputStream in = null; try { f = new FileInputStream("c:\\temp\\tmp.out"); in = new DataInputStream(f); // 파일에 연결된 데이터 입력 스트림 생성 System.out.println(in.readBoolean()); // 1바이트 읽어 boolean값 반환 System.out.printf("%x\n",(byte)in.readByte()); // 1바이트 읽어 byte값 반환 System.out.printf("%x\n",in.readShort()); // 2바이트 읽어 short값 반환 System.out.printf("%x\n",in.readInt()); // 4바이트 읽어 int값 반환 System.out.printf("%x\n",in.readLong()); // 8바이트 읽어 long값 반환 System.out.println((char)in.readChar()); // 2바이트 읽어 char값 반환 System.out.println(in.readDouble()); // 8바이트 읽어 double값 반환 System.out.println(in.readFloat()); // 4바이트 읽어 float값 반환 System.out.println(in.readUTF()); // UTF-8로 인코딩된 문자열 읽어 반환 in.close(); f.close(); } catch (IOException e) { System.out.println("입출력 오류"); } false 33 1234 5678 12abcdef c 1.2E-4 3.14 가나다라

문자 스트림 문자 스트림 바이트 스트림과 차이점 문자 입력 스트림의 종류 문자 출력 스트림의 종류 유니 코드로 된 문자 단위의 데이터가 흐르는 스트림 로컬 문자 집합으로 데이터를 자동 변환 모든 문자 스트림은 Reader과 Writer의 서브 클래스이다. 바이트 스트림과 차이점 바이트 스트림은 이미지 파일, 동영상 파일 등과 같은 바이너리 데이터 스트림 처리에 적합 문자 스트림은 문자 데이터 스트림만 처리할 수 있다. 문자 입력 스트림의 종류 Reader, InputStreamReader, FileReader 등 문자 출력 스트림의 종류 Writer, OutputStreamWriter, FileWriter 등

문자 스트림의 종류 Reader/Writer InputStreamReader/OutputStreamWriter java.io 패키지에 포함 추상 클래스로 문자 입출력 스트림을 나타내는 모든 클래스의 수퍼 클래스 InputStreamReader/OutputStreamWriter 바이트 스트림과 문자 스트림을 연결시켜주는 브릿지 역할 지정된 문자집합을 이용하여 입력 스트림에서 바이트를 읽어 문 자로 인코드 또는 문자를 바이트로 디코드하여 출력 스트림으로 출력 FileReader/FileWriter 텍스트 파일로 문자 데이터를 입출력 한다. FileInputStream과 FileOutputStream을 이용하여 바이트 스트림 을 문자 스트림으로 변환

예제 7-4 : System.ini 파일 읽기 FileReader를 이용하여 사용자 컴퓨터의 windows 디렉터리에 있는 System.ini 파일을 읽고 화면에 출력하라. System.ini 파일은 텍스트 파일이 다. import java.io.*; public class FileReaderEx { public static void main(String[] args) { FileReader in = null; try { // 파일로부터 문자 입력 스트림 생성 in = new FileReader("c:\\windows\\system.ini"); int c; while ((c = in.read()) != -1) { // 문자 단위로 읽는다. System.out.print((char)c); } in.close(); } catch (IOException e) { System.out.println("입출력 오류"); ; for 16-bit app support [386Enh] woafont=dosapp.fon EGA80WOA.FON=EGA80WOA.FON EGA40WOA.FON=EGA40WOA.FON CGA80WOA.FON=CGA80WOA.FON CGA40WOA.FON=CGA40WOA.FON [drivers] wave=mmdrv.dll timer=timer.drv [mci]

예제 7-5 : 문자 집합 지정이 잘못된 한글 파일 읽기 InputStreamReader의 문자 집합을 US-ASCII로 지정하여 한글 파일을 읽고 출력하라. import java.io.*; public class FileReadHangulEx { public static void main(String[] args) { InputStreamReader in = null; FileInputStream fin = null; try { fin = new FileInputStream("c:\\temp\\hangul.txt"); in = new InputStreamReader(fin, "US-ASCII"); int c; System.out.println("인코딩 문자 집합은 " + in.getEncoding()); // 문자 집합 출력 while ((c = in.read()) != -1) { // 문자 단위로 읽는다. System.out.print((char)c); } in.close(); fin.close(); } catch (IOException e) { System.out.println("입출력 오류"); 문자 집합 지정이 잘못된 경우의예를 보이기 위해 일부러 틀린 문자 집합 지정 hangul.txt 내용 인코딩 문자 집합은 ASCII ????????????????????????????

예제 7-6 : 한글 파일 읽기 예제 7-5의 인코딩을 수정하여 정상적으로 한글 파일을 읽고 출력하라 import java.io.*; public class FileReadHangul { public static void main(String[] args) { InputStreamReader in = null; FileInputStream fin = null; try { fin = new FileInputStream("c:\\temp\\hangul.txt"); in = new InputStreamReader(fin, "MS949"); int c; System.out.println("인코딩 문자 집합은 " + in.getEncoding()); while ((c = in.read()) != -1) { System.out.print((char)c); } in.close(); fin.close(); } catch (IOException e) { System.out.println("입출력 오류"); MS에서 만든 한글 확장 완성형 문자 집합 인코딩 문자 집합은 MS949 가나다라마바사아자차카타파하

FileWriter 사용 예 c:\test.txt 파일에 문자 출력 스트림을 생성하는 코드 파일에 문자 출력 FileWriter fout = new FileWriter("c:\\tmp\\test.txt"); FileWriter fout = new FileWriter("c:\\tmp\\test.txt"); fout.write(‘A’); // 한 문자 출력 fout.close();

예제 7-7 : 키보드 입력을 파일로 저장하기 키보드에서 입력받은 데이터를 c:\temp\test.txt 파일에 저장하는 코드를 작성하라. import java.io.*; public class FileWriterEx { public static void main(String[] args) { InputStreamReader in = new InputStreamReader(System.in); FileWriter fout = null; int c; try { fout = new FileWriter("c:\\temp\\test.txt"); while ((c = in.read()) != -1) { fout.write(c); } in.close(); fout.close(); } catch (IOException e) { System.out.println("입출력 오류"); abcdef 입력 후 <Enter> 키와 ctrl-z키 입력 실행 결과 test.txt 파일 생성

버퍼 입출력 스트림과 버퍼 입출력의 특징 버퍼 입출력(Buffered I/O)이란? 버퍼 입출력의 필요성 버퍼 입출력은 입출력 장치와 프로그램 사이에 버퍼를 두어 효율적 으로 입출력 처리 버퍼 입출력의 필요성 프로그램의 실행 속도와 입출력 장치의 데이타 처리 속도의 불일치 에 대해 대처하기 쉬움

버퍼 스트림의 종류 바이트 스트림 문자 스트림 바이트 단위의 바이너리 데이타를 처리하는 버퍼 스트림 BufferedInputStream와 BufferedOutputStream 문자 스트림 유니코드의 문자 데이타만을 처리하는 버퍼 스트림 BufferedReader와 BufferedWriter

BufferedOutputStream 사용 예 20바이트 크기의 버퍼를 사용하고, System.out 표준 스 트림에 출력하는 버퍼 스트림 생성 파일 전체를 읽어 화면에 출력 버퍼에 남아 있는 데이터 출력 BufferedOutputStream out = new BufferedOutputStream(System.out, 20); BufferedOutputStream bout = new BufferedOutputStream(System.out, 20); FileReader fin = new FileReader("c:\\windows\\system.ini"); int c; while ((c = fin.read()) != -1) { bout.write((char)c); } fin.close(); bout.close(); bout.flush();

예제 7-8 : 버퍼 출력 이용 예제 버퍼 크기가 5인 출력 버퍼 스트림을 표준 출력 스트림과 연결하고 키보드에서 입력받은 문자를 출력 스트림에 출력하고, 입력의 끝을 알리면 버퍼에 남아 있는 모든 문자를 출력하는 프로그램을 작성하라. import java.io.*; public class BufferedIOEx { public static void main(String[] args) { InputStreamReader in = new InputStreamReader(System.in); BufferedOutputStream out = new BufferedOutputStream(System.out, 5); try { int c; while ((c = in.read()) != -1) { out.write(c); } out.flush(); // 버퍼에 남아 있던 문자 출력 if (in != null) { in.close(); out.close(); } catch (IOException e) { System.out.println("입출력 오류"); ctrl-z가 입력될 때까지 반복 실제 버퍼가 다 찰 때만 문자가 화면으로 출력 버퍼가 5이므로 “12345678”을 입력하고 리턴을 치면 화면에“12345”가 먼저 출력 되고 ctrl-z를 눌러 입력의 끝을 알리면 버퍼에 남아 있던“678”이 출력된다 12345678

File 클래스 File 클래스의 특징 파일의 경로명을 다루는 클래스 파일 클래스의 객체는 파일 또는 디렉터리를 다룸 파일의 내용 읽고 쓰기 - 파일 스트림 이용 File 객체와 스트림을 연결하여 파일 접근

File 클래스 생성자와 주요 메소드 메소드 설명 File(File parent, String child) 추상 경로명 parent가 나타내는 디렉터리에 문자열 child가 나타내는 새로운 File 객체 생성 File(String pathname) 문자열 pathname이 나타내는 File 객체 생성 File(String parent, String child) 문자열 parent가 나타내는 디렉터리에 문자열 child가 나타내는 새로운 File 객체 생성 File(URI uri) file:URI를 추상 경로명으로 변환하여 File 객체 생성 메소드 설명 boolean mkdir() 추상 경로명이 나타내는 새로운 디렉터리 생성 String[] list() 추상 경로명이 나타내는 디렉터리 내에 있는 파일과 디렉터리 이름을 문자열 배열로 반환 String[] listFiles() 추상 경로명이 나타내는 디렉터리 내에 있는 파일의 이름을 문자열 배열로 반환 boolean renameTo(File dest) dest가 지정하는 추상 경로명으로 파일 이름 변경 boolean delete() 추상 경로명이 나타내는 파일 또는 디렉터리 삭제 long length() 추상 경로명이 나타내는 파일의 크기 반환 String getPath() 추상 경로명 전체를 문자열로 변환하여 반환 String getName() 추상 경로명이 나타내는 파일 또는 디렉터리 이름을 문자열로 변환하여 반환 boolean isFile() 추상 경로명이 일반 파일이면 true 반환 boolean isDirectory() 추상 경로명이 디렉터리이면 true 반환 long lastModified() 추상 경로명이 나타내는 파일이 마지막으로 변경된 시간 반환 boolean exists() 추상 경로명이 나타내는 파일 또는 디렉터리가 존재하면 true 반환

File 클래스 사용 예 c:\test.txt 파일을 나타내는 File 객체를 생성 파일 관리 파일 타입 구분하기, isFile()과 isDirectory() 디렉터리에 있는 파일 리스트 얻기, list() File f = new File("c:\\test.txt"); File f = new File("c:\\windows\\system.ini"); String res; if(f.isFile()) // 파일 타입이면 res = "파일"; else // 디렉터리 타입이면 res = "디렉터리"; System.out.println(f.getPath() + "은 " + res + "입니다."); c:\windows\system.ini은 파일입니다. File f = new File("c:\\tmp\\java_sample"); String[] filenames = f.list(); // 파일명 리스트 얻기 for (int i=0; i<filenames.length; i++) { File sf = new File(f, filenames[i]); System.out.print(filenames[i]); System.out.print("\t파일 크기: " + sf.length()); }

예제 7-9 : File 클래스 활용한 파일 관리 File 클래스를 이용하여 파일의 타입을 알아내고, 디렉터리에 있는 파일들을 나열하며, 디렉터리 이름을 변경하는 프로그램을 작성해보자. import java.io.File; public class FileClassExample { // 디렉터리에 포함된 파일과 디렉터리의 이름, 크기, 수정 시간을 출력하는 메소드 public static void dir(File fd) { String[] filenames = fd.list(); // 디렉터리에 포함된 파일 리스트 얻기 for (String s : filenames) { File f = new File(fd, s); long t = f.lastModified(); // 마지막으로 수정된 시간 System.out.print(s); System.out.print("\t파일 크기: " + f.length()); // 파일 크기 System.out.printf("\t수정한 시간: %tb %td %ta %tT\n",t, t, t, t); } public static void main(String[] args) { File f1 = new File("c:\\windows\\system.ini"); File f2 = new File("c:\\tmp\\java_sample"); File f3 = new File("c:\\tmp"); String res; if(f1.isFile()) // 파일 타입이면 res = "파일"; else // 디렉터리 타입이면 res = "디렉터리"; System.out.println(f1.getPath() + "은 " + res + "입니다."); if (!f2.exists()) { //f2가 나타내는 파일이 존재하는지 검사 if (!f2.mkdir()) // 존재하지 않으면 디렉터리 생성 System.out.println("디렉터리 생성 실패"); if(f2.isFile()) // 파일 타입이면 res = "파일"; else // 디렉터리 타입이면 res = "디렉터리"; System.out.println(f2.getPath() + "은 " + res + "입니다."); dir(f3); // c:\tmp에 있는 파일과 디렉터리 화면에 출력 f2.renameTo(new File("c:\\tmp\\javasample")); // 파일 이름 변경 dir(f3); } c:\windows\system.ini은 파일입니다. c:\tmp\java_sample은 디렉터리입니다. hangul.txt 파일 크기: 28 수정한 시간: 11월 29 일 21:04:46 Hello.java 파일 크기: 469 수정한 시간: 10월 06 수 13:23:59 Hello2010.java 파일 크기: 126 수정한 시간: 10월 06 수 10:01:56 HelloDoc.java 파일 크기: 669 수정한 시간: 10월 06 수 14:23:32 java_sample 파일 크기: 0 수정한 시간: 11월 14 일 16:46:27 hangul.txt 파일 크기: 28 수정한 시간: 11월 29 일 21:04:46 Hello.java 파일 크기: 469 수정한 시간: 10월 06 수 13:23:59 javasample 파일 크기: 0 수정한 시간: 11월 14 일 16:46:27

예제 7-10 : 텍스트 파일 복사 문자 스트림을 이용하여 텍스트 파일을 복사하는 프로그램을 작성하라 import java.io.*; public class TextCopy { public static void main(String[] args){ File src = new File("c:\\windows\\system.ini"); // 소스 파일 File dst = new File("c:\\tmp\\system.txt"); // 목적 파일 FileReader fr = null; FileWriter fw = null; BufferedReader in = null; BufferedWriter out = null; int c; try { fr = new FileReader(src); fw = new FileWriter(dst); in = new BufferedReader(fr); out = new BufferedWriter(fw); while ((c = in.read()) != -1) { out.write((char)c); } in.close(); out.close(); fr.close(); fw.close(); } catch (IOException e) { System.out.println("파일 복사 오류"); }

예제 7-11 : 바이너리 파일 복사 바이트 스트림을 이용하여 바이너리 파일을 복사하는 프로그램을 작성하라 import java.io.*; public class BinaryCopy { public static void main(String[] args) { File src = new File("c:\\windows\\explorer.exe"); // 복사할 파일 File dst = new File("c:\\tmp\\explorer.bin"); // 복사될 파일 FileInputStream fi = null; FileOutputStream fo = null; BufferedInputStream in = null; BufferedOutputStream out = null; int c; try { fi = new FileInputStream(src); // 파일 입력 바이트 스트림에 연결 fo = new FileOutputStream(dst); // 파일 출력 바이트 스트림에 연결 in = new BufferedInputStream(fi); // 버퍼 입력 스트림에 연결 out = new BufferedOutputStream(fo); // 버퍼 출력 스트림에 연결 while ((c = in.read()) != -1) { out.write((char)c); } in.close(); out.close(); fi.close(); fo.close(); } catch (IOException e) { System.out.println("파일 복사 오류"); }