>Java >java지도 시간 >사례 연구: 파일 복사

사례 연구: 파일 복사

PHPz
PHPz원래의
2024-07-16 16:27:201151검색

이 섹션에서는 파일 복사에 유용한 유틸리티를 개발합니다. 이 섹션에서는 사용자가 파일을 복사할 수 있는 프로그램을 작성하는 방법을 배웁니다. 사용자는 다음 명령을 사용하여 소스 파일과 대상 파일을 명령줄 인수로 제공해야 합니다.

java 소스 복사 대상

프로그램은 소스 파일을 대상 파일에 복사하고 파일의 바이트 수를 표시합니다. 프로그램은 소스 파일이 없거나 대상 파일이 이미 존재하는 경우 사용자에게 경고해야 합니다. 프로그램의 샘플 실행은 아래 그림에 나와 있습니다.

Image description

소스 파일의 내용을 대상 파일로 복사하려면 파일 내용에 관계없이 입력 스트림을 사용하여 소스 파일에서 바이트를 읽고 출력 스트림을 사용하여 대상 파일로 바이트를 보내는 것이 적절합니다. 소스 파일과 대상 파일은 명령줄에서 지정됩니다. 소스 파일에 대한 InputFileStream과 대상 파일에 대한 OutputFileStream을 생성합니다. read() 메서드를 사용하여 입력 스트림에서 바이트를 읽은 다음 write(b) 메서드를 사용하여 해당 바이트를 출력 스트림에 씁니다. 성능을 향상하려면 BufferedInputStreamBufferedOutputStream을 사용하세요. 아래 코드는 문제에 대한 해결책을 제공합니다.

package demo;
import java.io.*;

public class Copy {
    public static void main(String[] args) throws IOException {
        // Check command-line parameter usage
        if(args.length != 2) {
            System.out.println("Usage: java Copy sourceFile targetfile");
            System.exit(1);
        }

        // Check if source file exists
        File sourceFile = new File(args[0]);
        if(!sourceFile.exists()) {
            System.out.println("Source file " + args[0] + " does not exist");
            System.exit(2);
        }

        // Check if source file exists
        File targetFile = new File(args[1]);
        if(!targetFile.exists()) {
            System.out.println("Target file " + args[1] + " already exist");
            System.exit(3);
        }

        try(
            // Create an input  stream
                BufferedInputStream input = new BufferedInputStream(new FileInputStream(sourceFile));

                // Create an output stream
                BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(targetFile));
            ) {
            // COntinuously read a byte from input and write it to output
            int r, numberOfBytesCopied = 0;
            while((r = input.read()) != -1) {
                output.write((byte)r);
                numberOfBytesCopied++;
            }

            // Display the file size
            System.out.println(numberOfBytesCopied + " bytes copied");
        }
    }
}

프로그램은 먼저 사용자가 명령줄 7~10행에서 두 개의 필수 인수를 전달했는지 확인합니다.

프로그램은 File 클래스를 사용하여 소스 파일과 타겟 파일이 존재하는지 확인합니다. 소스 파일이 존재하지 않거나(14~17행) 대상 파일이 이미 존재하는 경우(20~24행) 프로그램이 종료됩니다.

라인 28의 FileInputStream에 래핑된 BufferedInputStream을 사용하여 입력 스트림이 생성되고, FileOutputStreamBufferedOutputStream을 사용하여 출력 스트림이 생성됩니다. 🎜> 31행.

((r = input.read()) != -1)(35행) 표현식은 에서 바이트를 읽습니다.
input.read()r에 할당하고 -1인지 확인합니다. -1 입력값은 파일의 끝을 의미합니다. 프로그램은 모든 바이트를 읽을 때까지 계속해서 입력 스트림에서 바이트를 읽고 이를 출력 스트림으로 보냅니다.

위 내용은 사례 연구: 파일 복사의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.