复制文件的思路:
通过文件路径,我们使用File类对象的过滤器,可以直到那个文件是目录和文件,当路径是文件夹的时候,我们可以通过File类对象的mkdir在你的目标目录下创建目录,如果是文件,就更换为新的路径,并且文件的名字与后缀都要截取下来,使用输出流将文件写入到新的路径。
将一个文件夹复制到另一个地方
// 传入的target目标路径其实是你要存入文件的父文件夹的父文件夹
public static void copyDirectory(String srcname, String target) throws IOException {
// 你要复制的文件夹 文件路径
File srcFile = new File(srcname);
// 你要将文件夹复制到的目的地的文件路径
File targetFile = new File(target,srcFile.getName());
//根据路径创建文件夹
targetFile.mkdir();
// 获取文件夹下的所有文件路径
File[] files = srcFile.listFiles();
if(files != null) {
for(File file : files) {
if(file.isFile()) {
FileInputStream fis = new FileInputStream(file);
//parent=targetFile, child=文件名
File file2 = new File(targetFile,file.getName());
FileOutputStream fos = new FileOutputStream(file2);
byte[] b = new byte[1024*8];
int len;
while((len=fis.read(b)) != -1)
fos.write(b, 0, len);
fis.close();
fos.close();
} else {
// 不是文件,就是文件夹
copyDirectory(file.getAbsolutePath(), targetFile.getAbsolutePath());
}
}
}
}
搜索文件夹,将文件夹下的所有JPG文件复制到另一个文件夹下
public static void copyDirectory(String srcname, String target) throws IOException {
// 你要复制的文件夹 文件路径
File srcFile = new File(srcname);
// 你要将文件夹复制到的目的地的文件路径
File targetFile = new File(target);
//根据路径创建文件夹
targetFile.mkdir();
// 获取文件夹下的所有文件路径
File[] files = srcFile.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if(pathname.isDirectory() || pathname.getName().endsWith(".JPG"))
return true;
return false;
}
});
if(files != null) {
for(File file : files) {
if(file.isFile()) {
FileInputStream fis = new FileInputStream(file);
//parent=targetFile, child=文件名
File file2 = new File(targetFile,file.getName());
FileOutputStream fos = new FileOutputStream(file2);
byte[] b = new byte[1024*8];
int len;
double sum = 0;
double total = fis.available();
while((len=fis.read(b)) != -1) {
fos.write(b, 0, len);
sum += len;
double tishi = sum/total * 100;
System.out.println("完成度:"+tishi+"%");
}
fis.close();
fos.close();
} else {
// 不是文件,就是文件夹
copyDirectory(file.getAbsolutePath(), target);
}
}
}
}