您的位置:首页 > 其它

[IO]——FileUtil

2016-04-06 23:39 330 查看
public class FileUtil {//文件的拷贝
public static void copyFile(String srcPath,String destPath) throws IOException ,FileNotFoundException{
//1、建立联系 源
File src=new File(srcPath);//确保源存在,且为文件
File dest=new File(destPath);//目的地,文件可以不存在
if (!src.isFile()) {
System.out.println("只能拷贝文件");
throw new IOException("只能拷贝文件");
}
//2、选择流
InputStream is=new FileInputStream(src);
OutputStream os=new FileOutputStream(dest);//dest不能是文件夹
//3、文件的拷贝 循环+读取+写出
byte[] flush=new byte[1024];
int len=0;//接受长度
//读取
while(-1!=(len=is.read(flush))){
//写出
os.write(flush, 0, len);
}
os.flush();//强制输出
//关闭流,先打开的后关闭
os.close();
is.close();
}
public static void copyFile(File src,File dest) throws IOException ,FileNotFoundException{
if (!src.isFile()) {
System.out.println("只能拷贝文件");
throw new IOException("只能拷贝文件");
}
//dest为已经存在的文件夹,不能建立于文件夹同名的文件
if (dest.isDirectory()) {
System.out.println("不能建立于文件夹同名的文件");
throw new IOException("不能建立于文件夹同名的文件");
}
//2、选择流
InputStream is=new FileInputStream(src);
OutputStream os=new FileOutputStream(dest);
//3、文件的拷贝 循环+读取+写出
byte[] flush=new byte[1024];
int len=0;//接受长度
//读取
while(-1!=(len=is.read(flush))){
//写出
os.write(flush, 0, len);
}
os.flush();//强制输出
//关闭流,先打开的后关闭
os.close();
is.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());
}
copyDirDetail(src,dest);
}
public static void copyDirDetail(File src,File dest){
if (src.isFile()) {//文件
try {
FileUtil.copyFile(src, dest);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}else if(src.isDirectory()){//文件夹
//确保目标文件夹存在
dest.mkdirs();
//获取下一级的目录或者文件
for(File sub:src.listFiles()){
copyDirDetail(sub, new File(dest, sub.getName()));
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  IO 文件拷贝