There is a copy command in the operating system. The main function of this command is to realize the file copy processing. Now it is required to simulate this command and realize the file copy processing by inputting the copy source file path and the copy target path through initialization parameters.
Demand analysis:
If you need to copy files, it is possible to copy various types of files, so you must use byte stream;
· when copying, it may be necessary to consider the copying of large files;
Implementation plan:
Scheme 1: use InputStream to directly read all the contents to be copied into the program, and then output them to the target file at one time;
| - if the files copied now are large, basically the program will die;
Scheme 2: use partial copy to read part of the output part of the data. If you want to use the second method now, the core operation method is:
|- InputStream: public int read(byte[] b) throws IOException;
|- OutputStream: public void write(byte[] b,int off, int len) throws IOException;
Example: file copy processing
JavaAPIDemo1 import java.io.File; 2 import java.io.FileInputStream; 3 import java.io.FileOutputStream; 4 import java.io.InputStream; 5 import java.io.OutputStream; 6 class FileUtil { // Define a tool class for file operation 7 private File srcFile ; // Source file path 8 private File desFile ; // Destination file path 9 public FileUtil(String src,String des) { 10 this(new File(src),new File(des)) ; 11 } 12 public FileUtil(File srcFile,File desFile) { 13 this.srcFile = srcFile ; 14 this.desFile = desFile ; 15 } 16 public boolean copy() throws Exception { // File copy processing 17 if (!this.srcFile.exists()) { // Source file must exist! 18 System.out.println("The copied source file does not exist!"); 19 return false ; // Copy failure 20 } 21 if (!this.desFile.getParentFile().exists()) { 22 this.desFile.getParentFile().mkdirs() ; // Create parent directory 23 } 24 byte data [] = new byte[1024] ; // Create a copy buffer 25 InputStream input = null ; 26 OutputStream output = null ; 27 try { 28 input = new FileInputStream(this.srcFile) ; 29 output = new FileOutputStream(this.desFile) ; 30 int len = 0 ; 31 // 1,Read the data into the array, and then return the number of reads len = input.read(data 32 // 2,Judge whether the number is-1,If not, write(len = input.read(data)) != -1 33 while ((len = input.read(data)) != -1) { 34 output.write(data, 0, len); 35 } 36 return true ; 37 } catch (Exception e) { 38 throw e ; 39 } finally { 40 if (input != null) { 41 input.close(); 42 } 43 if (output != null) { 44 output.close() ; 45 } 46 } 47 } 48 } 49 public class JavaAPIDemo { 50 public static void main(String[] args) throws Exception { 51 if (args.length != 2) { // Program execution error 52 System.out.println("Command execution error, execution structure: java JavaAPIDemo Copy source file path copy target file path"); 53 System.exit(1); 54 } 55 long start = System.currentTimeMillis() ; 56 FileUtil fu = new FileUtil(args[0],args[1]) ; 57 System.out.println(fu.copy() ? "File copy succeeded!" : "File copy failed!"); 58 long end = System.currentTimeMillis() ; 59 System.out.println("Copy completed:" + (end - start)); 60 } 61 }