【java】文件复制的简单实现

 1 package 文件操作;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 import java.io.InputStream;
 8 import java.io.OutputStream;
 9 
10 public class TestCopy {
11     public static void main(String[] args) throws IOException {
12         copy("D:\\com\\test.txt","C:\\com\\dest.txt");
13     }
14     public static void copy(String source,String dest) throws IOException{
15         File fileS=new File(source);
16         File fileD=new File(dest);
17         if(fileS.exists()){
18             InputStream in=new FileInputStream(fileS);
19             int len=(int)fileS.length();
20             byte[] b=new byte[len];
21             in.read(b);//一次性读入
22             in.close();            
23             
24             if(!(fileD.exists())){                
25                 fileD.getParentFile().mkdirs();
26                 fileD.createNewFile();                
27             }
28             OutputStream out=new FileOutputStream(fileD);
29             out.write(b);//一次性写出
30             out.close();
31         }else{
32             System.out.println(source+"文件不存在!");
33         }    
34     }
35 }
一次性读入和写出

 

 1 package 文件操作;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 import java.io.InputStream;
 8 import java.io.OutputStream;
 9 
10 public class TestCopy {
11     public static void main(String[] args) throws IOException {
12         copy(args[0],args[1]);
13     }
14     public static void copy(String source,String dest) throws IOException{
15         File fileS=new File(source);
16         File fileD=new File(dest);
17         if(fileS.exists()){
18             InputStream in=new FileInputStream(fileS);
19             if(!(fileD.exists())){                
20                 fileD.getParentFile().mkdirs();
21 //                fileD.createNewFile();//此语句可省,会自动创建        
22             }
23             OutputStream out=new FileOutputStream(fileD);
24             int b=0;
25             while((b=in.read())!=-1)
26                 out.write(b);//一次读入写出一个字节,此方式太慢!
27             in.close();
28             out.close();
29         }else{
30             System.out.println(source+"文件不存在!");
31         }    
32     }
33 }
一次读入写出一个字节

 

 1 package 文件操作;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 import java.io.InputStream;
 8 import java.io.OutputStream;
 9 
10 public class TestCopy {
11     public static void main(String[] args) throws IOException {
12         if(args.length!=2){
13             System.out.println("源文件或目标文件个数不对,请确认!");
14             System.exit(1);
15         }        
16         File sourceFile=new File(args[0]);
17         if(sourceFile.exists()){
18             File destFile=new File(args[1]);
19             if(!destFile.getParentFile().exists())//只需要判断目录是否存在,因为目录不存在不会自动创建,文件不存在会自动创建
20                 destFile.getParentFile().mkdirs();
21             InputStream in=new FileInputStream(sourceFile);
22             OutputStream out=new FileOutputStream(destFile,true);
23             byte[] bytes=new byte[10240];
24             int len=0;
25             while((len=in.read(bytes))!=-1)
26                 out.write(bytes,0,len);
27             in.close();
28             out.close();
29         }else{
30             System.out.println("源文件不存在!");
31         }
32     }
33 }
改善版

 

posted @ 2017-04-09 12:13  xiongjiawei  阅读(172)  评论(0编辑  收藏  举报