将文件夹下的所有文件递归遍历复制到指定文件夹下
程序员文章站
2022-06-04 08:11:36
...
把一个文件夹下所有的文件(包括子文件夹下的文件)全部复制到一个文件夹中(不包括原文件夹目录结构,就是把原文件夹及原文件夹子文件夹的所有的文件复制放到一个文件夹中)
/**
* @author lyx
* @date 2021/12/15 10:53
* Description:
*/
public class DirCopy {
public static void main(String[] args) throws FileNotFoundException {
String from = "F:\\Pixiv\\图片";
String to = "F:\\Pixiv\\out";
fileCopy(from,to);
}
/**
* 将源目录下所有文件(包括子目录下的文件)复制到指定目录
* @param from 源目录地址
* @param to 输出目录地址(目录不存在会自动创建)
*/
public static void fileCopy(String from,String to){
try {
Path pathTo = Paths.get(to);
if (!Files.exists(pathTo)){
Files.createDirectories(pathTo);
}
Files.walkFileTree(Paths.get(from),new SimpleFileVisitor<Path>(){
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
FileChannel fromChannel = new RandomAccessFile(file.toFile(), "rw").getChannel();
FileChannel toChannel = new RandomAccessFile(to+File.separator+file.toFile().getName(), "rw").getChannel();
long size = fromChannel.size();
//size:总长度 left:剩余长度
for (long left = size;left > 0;){
left -= fromChannel.transferTo(size-left,left,toChannel);
}
fromChannel.close();
toChannel.close();
return super.visitFile(file, attrs);
}
});
} catch (Exception e){
e.printStackTrace();
}
}
}
上一篇: Centos7安装vim8.0 + YouCompleteMe
下一篇: 数据库表授权