1. 이 프로그램을 완료하기 위해 알아야 할 지식 포인트:
1. hello world --- 말도 안되는 간단한 Java 프로그램을 작성합니다. . . . 하하
2. 자바 파일 작업 이해
3. 자바의 버퍼 동작 이해
4. 파일 작업에 대한 몇 가지 예외 처리 사항: 1. 소스 파일을 읽을 수 없습니다. 2. 대상 파일 생성 실패 3. 파일 잠금 문제 4. 문자 깨짐 문제. . . 어쩌면 전부는 아닐 수도 있습니다
필요한 패키지들입니다
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; IO 작업 중에 예외 처리가 필요합니다.
개인적으로 이러한 효율적인 방법은 컴퓨터를 설치할 때 메모리 작업이 상대적으로 높고 직접 IO 작업이 상대적으로 낮은 것이 가장 효율적인 작업이라고 생각합니다. . 그래서 여기서 선택한 것은 메모리를 읽고 IO를 균일하게 쓰는 것입니다.
package com.itheima;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;/** * 5. 다음의 복사본을 작성합니다. 프로그램 파일을 삭제하려면 가장 효율적인 방법을 사용해 보세요. * * @author [email protected] * * 1. 소스파일을 읽을 수 없습니다. 2. 대상 파일 생성 실패 3. 파일 잠금 문제 4. 문자 왜곡 문제 */public class Test5 {public static void main(String[] args) throws IOException {String src_file = "D:/java/java.doc" ;String des_file = "D:/java/java_copy.doc";copyFile(src_file, des_file);System.out.println("OK!");}public static void copyFile(String src, String des) throws IOException {BufferedInputStream inBuff = null;BufferedOutputStream outBuff = null;try {// 새 파일 입력 스트림 생성 그리고 그것을 비교합니다. inBuff = new BufferedInputStream(new FileInputStream(src));// 새 파일 출력 스트림을 생성하고 버퍼링합니다. outBuff = new BufferedOutputStream(new FileOutputStream(des));// 버퍼 배열 byte[] b = new byte[1024 * 5];int len;while ((len = inBuff.read( b)) != -1) {outBuff.write(b, 0, len);}// 이 버퍼링된 출력 스트림을 플러시합니다 outBuff.flush();} 마지막으로 {//스트림 닫기 if (inBuff != null)inBuff.close();if (outBuff != null)outBuff.close();}}}
다른 네티즌들의 보충제
try { File inputFile = new File(args[0]); if (!inputFile.exists()) { System.out.println("소스 파일이 존재하지 않습니다. 프로그램이 종료됩니다.") System.exit(1) ; } 파일 outputFile = new File(args[1]); InputStream in = new FileInputStream(inputFile) OutputStream out = new FileOutputStream(outputFile); byte[1024]; int temp = 0; while ((temp = in.read(date)) != -1) { out.write(date) } out.close(); (FileNotFoundException e) { // TODO 자동 생성된 catch 블록 e.printStackTrace() } catch (IOException e) { // TODO 자동 생성된 catch 블록 e.printStackTrace(); }