黑马程序员技术交流社区
标题:
简单复制文件代码优化
[打印本页]
作者:
先小涛
时间:
2013-4-19 14:30
标题:
简单复制文件代码优化
本帖最后由 先小涛 于 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(); //测试复制文档文件
}
}
复制代码
作者:
先小涛
时间:
2013-4-20 16:49
没人回帖,就结帖了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2