提问人:Red 提问时间:4/2/2022 最后编辑:Red 更新时间:4/17/2022 访问量:238
从目录中选择一个文件/文件夹
selecting one file/folder from the directory
问:
我正在构建一个程序,用于管理 java(io、nio、apache commons-io)库中从文件夹“a”到“b”的文件和文件夹的数量和分布。
我被困在一个点上,我可以将文件从“a”移动到“b”,但不能移动“a”的子文件夹(目录),反之亦然,我可以移动子文件夹但不能移动文件,有一次它让我发笑,因为它移动了文件和包含在“a”的子文件夹中的文件, 但不是文件夹。
问题是我不想在一对一的副本中将整个“A”复制到“B”,我正在构建一个管理工具,将每个“x”项(文件或文件夹)放在子“B”文件夹中。
我可以管理管理和细分的那部分。但是,如果正确调用,我被困在指针上,我无法让它一次指向“一个”文件夹/文件的文件夹和文件,以便程序处理。
如果我的解释不清楚,我们深表歉意。
编辑: 我能想到的最后一件事是将其解析为数组,但没有成功。 对于主,它只有指向位置的字符串,如果路径存在参数,则调用 copy 方法。
编辑#2:注意到我没有提到在main中会有一个整数与init和limit相关;其目的是将每个子文件夹的复制限制为“B”。
参考代码 :
public static boolean copyRecurse(String source, String destination, int limit,int init){
if (limit <= 0){System.out.println("Exiting..."); return true;}
if (limit == init){System.out.print("copying");}
System.out.println(".");
//copies the whole directory as is
/*
try {
copyDirectory(new File(source), new File(destination));
}catch (IOException e) {e.printStackTrace();}
*/
// failed attempt to make it copy by one subfolder/file at a time
try {
copyFile(new File(String.valueOf(Arrays.stream(Objects.requireNonNull(new File(source).listFiles())).findFirst())), new File(destination));
}catch (IOException e) {e.printStackTrace();}
copyRecurse(source,destination,limit-1,init);
return true;
}
答:
显然,在commons IO方法中有一个解析为数组的方法,称为“File[]"
注意:它是在递归函数或双循环中递增“incrementasingInteger”和“index” 所以你可以建立一个文件夹限制结构,即 (“increaseInteger” = part)
目标文件夹
|第1部分
||第 1 部分中的项目(文件夹和文件)数
|第2部分
||第 2 部分中的项目(文件夹和文件)数
|第 3 部分
||Part3 中的项目(文件夹和文件)数
对于我的情况(选择文件或文件夹),这就是我想出的:
File srcFolder = new File(source);
File[] listOfFiles = srcFolder.listFiles();
try {
if (listOfFiles[index].isDirectory()) {
FileUtils.moveDirectoryToDirectory(listOfFiles[index], new File(destination + "\\subDestination"+ increasingInteger), false);
}
if (listOfFiles[index].isFile()){
FileUtils.moveFileToDirectory(listOfFiles[limit], new File(destination + "\\subDestination"+ increasingInteger),false);
}
上一个:复制大文件需要更多时间
评论