本帖最后由 先小涛 于 2013-4-20 16:49 编辑  
- /**
 
 - * 看老毕的视频,自己写了个工具类,求完善。
 
 - * 从线程安全、代码重构、功能扩展(复制所用时间)等方面进行代码优化?不必全部考虑,也可以从其他方面考虑
 
 - * 代码已测试,运行结果正确。
 
 - * @author 先小涛
 
 - * @version 1.0
 
 - */
 
 - import java.io.FileInputStream;
 
 - import java.io.FileNotFoundException;
 
 - import java.io.FileOutputStream;
 
 - import java.io.IOException;
 
 - import java.io.InputStream;
 
 - import java.io.OutputStream;
 
 - /**
 
 - * CopyFileUtil:复制文件工具类,可以复制文本文件、图像文件、视频以及其他文件,不能复制文件夹
 
 - * properties:InputStream in,OutputStream out,byte[] buff,int len
 
 - */
 
 - class CopyFileUtil {
 
 -         private InputStream in;                //字节读取流对象
 
 -         private OutputStream out;        //字节写入流对象
 
 -         private byte[] buff;                //缓冲区,根据文件类型,动态设定大小
 
 -         private int len;
 
 -         /**
 
 -          * 构造函数
 
 -          * @param srcPath 源始文件路径名称
 
 -          * @param objPath 目的文件路径名称
 
 -          */
 
 -         public CopyFileUtil(String srcPath, String objPath){
 
 -                 try {
 
 -                         this.in = new FileInputStream(srcPath);
 
 -                         this.out = new FileOutputStream(objPath);
 
 -                 } catch (FileNotFoundException e) {
 
 -                         throw new RuntimeException("创建对象失败,请确认文件路径名是否正确?");
 
 -                 }
 
 -         }
 
 -         //复制文本文件,缓冲区大小为2K,若源文件小,则可调用此方法
 
 -         public void copyText() throws IOException{
 
 -                 byte[] smallBuf = new byte[1024];
 
 -                 copy(smallBuf);
 
 -                 close();
 
 -         }
 
 -         //复制大型文件,缓冲区大小为1M,若源文件大,则可调用此方法
 
 -         public void copyOtherFiles() throws IOException{
 
 -                 byte[] bigerBuf = new byte[1024*512];
 
 -                 copy(bigerBuf);
 
 -                 close();
 
 -         }
 
 -         //复制图像文件,扩展功能,调用copyOtherFiles()
 
 -         public void copyPicture() throws IOException{
 
 -                 copyOtherFiles();
 
 -         }
 
 -         //复制视频文件,扩展功能,调用copyOtherFiles()
 
 -         public void copyMedia() throws IOException{
 
 -                 copyOtherFiles();
 
 -         }
 
 -         //复制文本文件,缓冲区大小为2k,因源文件小,则可调用此方法
 
 -         /**
 
 -          * 复制方法
 
 -          * @param buf
 
 -          * @throws IOException
 
 -          */
 
 -         public void copy(byte[] buf) throws IOException{
 
 -                 this.buff = buf;
 
 -                 while((len=in.read(buff)) != -1){
 
 -                         out.write(buff,0,len);
 
 -                 }
 
 -                 close();
 
 -         }
 
 -         /**
 
 -          * close():关闭资源
 
 -          */
 
 -         public void close(){
 
 -                 try {
 
 -                         in.close();
 
 -                         out.close();
 
 -                 } catch (IOException e) {
 
 -                         e.printStackTrace();
 
 -                 }
 
 -         }
 
 - }
 
 - /**
 
 - * 测试Demo
 
 - */
 
 - public class CopyFileUtilDemo{
 
 -         public static void main(String[] args) throws IOException {
 
 -                 CopyFileUtil cfu1 = new CopyFileUtil("d:\\demo.java", "d:\\demo_copy.java");
 
 -                 cfu1.copyText();                //测试复制文本文件
 
 -                 CopyFileUtil cfu2 = new CopyFileUtil("d:\\test.png", "d:\\test_copy.png");
 
 -                 cfu2.copyPicture();                //测试复制图像文件
 
 -                 CopyFileUtil cfu3 = new CopyFileUtil("d:\\黑马程序员.avi", "d:\\黑马程序员copy.avi");
 
 -                 cfu3.copyMedia();                //测试复制视频文件
 
 -                 CopyFileUtil cfu4 = new CopyFileUtil("d:\\java.doc", "d:\\java_copy.doc");
 
 -                 cfu4.copyOtherFiles();        //测试复制文档文件
 
 -         }
 
 - }
 
  复制代码 |