이 섹션에서는 파일 복사에 유용한 유틸리티를 개발합니다. 이 섹션에서는 사용자가 파일을 복사할 수 있는 프로그램을 작성하는 방법을 배웁니다. 사용자는 다음 명령을 사용하여 소스 파일과 대상 파일을 명령줄 인수로 제공해야 합니다.
java 소스 복사 대상
프로그램은 소스 파일을 대상 파일에 복사하고 파일의 바이트 수를 표시합니다. 프로그램은 소스 파일이 없거나 대상 파일이 이미 존재하는 경우 사용자에게 경고해야 합니다. 프로그램의 샘플 실행은 아래 그림에 나와 있습니다.
소스 파일의 내용을 대상 파일로 복사하려면 파일 내용에 관계없이 입력 스트림을 사용하여 소스 파일에서 바이트를 읽고 출력 스트림을 사용하여 대상 파일로 바이트를 보내는 것이 적절합니다. 소스 파일과 대상 파일은 명령줄에서 지정됩니다. 소스 파일에 대한 InputFileStream과 대상 파일에 대한 OutputFileStream을 생성합니다. read() 메서드를 사용하여 입력 스트림에서 바이트를 읽은 다음 write(b) 메서드를 사용하여 해당 바이트를 출력 스트림에 씁니다. 성능을 향상하려면 BufferedInputStream 및 BufferedOutputStream을 사용하세요. 아래 코드는 문제에 대한 해결책을 제공합니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!