import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileUtil {
/**
* buffered复制文件
* @param from
* @param target
*/
public static void BufferedCopyFile(File from, File target) {
FileInputStream input = null;
BufferedInputStream binput = null;
FileOutputStream output = null;
BufferedOutputStream boutput = null;
try{
input=new FileInputStream(from);
binput = new BufferedInputStream(input);
output=new FileOutputStream(target);
boutput = new BufferedOutputStream(output);
byte[] buffer = new byte[1024*8];
int lenght = -1;
while((lenght = binput.read(buffer))!=-1){
boutput.write(buffer, 0, lenght);
}
}catch (IOException e){
System.out.println(e.toString());
}finally{
try {
input.close();
output.close();
binput.close();
boutput.close();
} catch (IOException e) {
System.out.println(e.toString()+"关闭流失败");
}
}
}
/**
* stream复制文件
* @param from
* @param target
*/
public static void copyFile(File from, File target) {
FileInputStream input = null;
FileOutputStream output = null;
try{
input=new FileInputStream(from);
output=new FileOutputStream(target);
byte[] buffer = new byte[1024*8];
int lenght = -1;
while((lenght = input.read(buffer))!=-1){
output.write(buffer, 0, lenght);
}
}catch (IOException e){
System.out.println(e.toString());
}finally{
try {
input.close();
output.close();
} catch (IOException e) {
System.out.println(e.toString()+"关闭流失败");
}
}
}
/**
* 删除文件夹下的文件和文件夹
* @param file
*/
public static boolean deleteFile(File file) {
if (file.isFile()) {
return file.delete();
} else {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
deleteFile(files[i]);
}
return file.delete();
}
}
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
File from = new File("D:"+File.separator+"copytest.rmvb");
File target = new File("D:"+File.separator+"copytest_copy.rmvb");
copyFile(from,target);
long endTime = System.currentTimeMillis();
System.out.println("复制文件用时:"+(endTime-startTime)/1000);
}
}
我的机器配置,I3处理器,4G内存
使用buffered复制0.99G的视频文件耗时42s
使用FileInputSteam耗时108s