package byteIO;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
/**
* 文件的操作
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileUtil {
public static void copyFile(String srcFile,String destFile) throws IOException {
copyFile(new File(srcFile),new File(destFile));
}
public static void copyFile(File src,File dest) throws IOException {
if (!src.isFile()) {
throw new IOException("只能拷贝文件");
}
if(dest.isDirectory()) {
throw new IOException("不能建立与文件夹同名的文件");
}
InputStream iStream = new BufferedInputStream(new FileInputStream(src));
OutputStream oStream = new BufferedOutputStream(new FileOutputStream(dest));
byte[] flush = new byte[1024];
int len = 0;
while (-1!=(len=iStream.read(flush))) {//这里读
oStream.write(flush, 0, len);//这里写
}
oStream.flush();
oStream.close();
iStream.close();
}
public static void copyDir(String srcPath,String destPath) {
File src = new File(srcPath);
File dest = new File(destPath);
copyDir(src,dest);
}
public static void copyDir(File src,File dest) {
if(src.isDirectory()) {
dest = new File(dest,src.getName());
}
copyDirsDetail(src,dest);
}
public static void copyDirsDetail(File src,File dest) {
if (src.isFile()) {
try {
FileUtil.copyFile(src, dest);
} catch (IOException e) {
e.printStackTrace();
}
}else if(src.isDirectory()) {
dest.mkdirs();
for(File sub:src.listFiles()) {
copyDirsDetail(sub, new File(dest, sub.getName()));
}
}
}
}