通过InputStream和OutputStream实现文件的拷贝。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
class CopyFile{
@SuppressWarnings("resource")
public static void copy(String file,String copy) throws IOException{
//取得当前时间,计算文件拷贝所需时间
long start = System.currentTimeMillis();
//准备好输入输出流
InputStream input = null;
OutputStream output = null;
try{
//确定好所输入的路径是正确的且是文件路径
if(file==null&©==null){
System.out.println("请输入两个完整的路径");
return ;
}
File inFile = new File(file);
if(!inFile.exists()){
System.out.println("输入的源路径不存在。");
return ;
}
if(!inFile.isFile()){
System.out.println("输入的"+file+"不是文件路径,无法拷贝文件");
return;
}
File outFile = new File(copy);
if(outFile.getParentFile()!=null){
if(!outFile.getParentFile().exists()){
outFile.getParentFile().mkdirs();
}
}else{
System.out.println("输入的目标路径不存在。");
return ;
}
byte data[] = new byte[2048];
input = new FileInputStream(inFile);
output = new FileOutputStream(outFile);
int temp = 0;
while((temp = input.read(data))!=-1){
output.write(data, 0, temp);
}
long end = System.currentTimeMillis();
System.out.println("拷贝完成,花费的时间为"+(end-start));
}catch(Exception e){
throw e;
}
finally{
//关闭输入输出流
if(input!=null){
input.close();
}
if(output!=null){
output.close();
}
}
}
}
public class TestCopy { //定义测试类
public static void main(String[] args) {
try {
CopyFile.copy("d:"+File.separator+"test.txt", "d:"+File.separator+"copy.txt");
} catch (IOException e) {
e.printStackTrace();
}
}
}