复制文件
学习IO过程中,尝试写复制文件和复制夹的函数代码,一开始只考虑到目标文件destFile是否存在,于是就使用了输入流FileOutputStream在目标文件不存在的情况下可以自动创建该文件
代码:
public static void copyFile(String srcFile, String destFile){
File src = new File(srcFile);
File dest = new File(destFile);
try(FileInputStream fsrc=new FileInputStream(src);FileOutputStream fdest=new FileOutputStream(dest)){
byte all[]=new byte[(int)src.length()];
fsrc.read(all);
fdest.write(all);
}catch(IOException e) {
e.printStackTrace();
}
}
测试过程中发现了如果目标文件的父路径错误则会导致出错,就要加入判断父路径是否存在:
if(!dest.exists()) {
dest.getParentFile().mkdirs();
try{
dest.createNewFile();
}
catch(IOException e) {
e.printStackTrace();
}
}
dest.exists()检测文件是否存在,然后由dest.getParentFile().mkdirs()创建目标文件的文件夹,dest.createNewFile()会直接创建该目标文件(这里的creatNewFile()我后面又感觉有FileOutputStream()存在其实可以直接省去)
复制文件夹
代码:
public static void copyFolder(String srcFolder, String destFolder){
File src = new File(srcFolder);
//验证是否存在这个这个路径,如果不存在就创建该路径
File dest = new File(destFolder);
if(!dest.exists() && !dest.isDirectory()) {
dest.mkdirs();
}
File list[]=src.listFiles();
String Fname[]=src.list();
for(int i=0;i<list.length;i++) {
copyFile(list[i].getAbsolutePath(), destFolder+"/"+Fname[i]);
}
}
创建文件夹与创建文件类似,要通过exists()来判断目标路径是否存在,再创建该路径,后面就正常遍历了。