gpt4 book ai didi

java - 如何在 loadonstartup 时复制嵌套文件夹内的文件夹?

转载 作者:行者123 更新时间:2023-12-01 19:41:29 24 4
gpt4 key购买 nike

我有大约 150 个文件夹,每个文件夹中都存在图像,我试图将整个目录复制到另一个目录中。对于少数目录,它会在自动停止后继续工作,不会引发任何错误或异常。我正在使用 FileUtils 方法来实现此目的。

org.apache.commons.io.FileUtils.copyDirectoryToDirectory(originalImageFolder, new File(this.ctx.getRealPath(newFilePath)));

最佳答案

我提供了一个替代解决方案,无需使用第三方,例如 apache FileUtils。这可以通过命令行来完成。

我在 Windows 上对此进行了测试,它对我有用。 Linux 解决方案如下。

这里我使用的是 Windows xcopy命令复制所有文件,包括子目录。我传递的参数定义如下。

  • /e - 复制所有子目录,即使它们是空的。
  • /i - 如果源是目录或包含通配符和目标不存在,xcopy 假定 Destination 指定目录名称并创建一个新目录。然后,xcopy复制所有指定的文件进入新目录。
  • /h - 复制具有隐藏和系统文件属性的文件。默认情况下,xcopy 不复制隐藏文件或系统文件

我的示例使用 ProcessBuilder类来构造一个进程来执行复制(xcopy & cp)命令。

Windows:

String src = "C:\\srcDir";
String dest = "C:\\destDir";
List<String> cmd = Arrays.asList("xcopy", src, dest, "/e", "/i", "/h");
try {
Process proc = new ProcessBuilder(cmd).start();
BufferedReader inp = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = null;
while ((line = inp.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}

Linux:

String src = "srcDir/";
String dest = "~/destDir/";
List<String> cmd = Arrays.asList("/bin/bash", "-c", "cp", "r", src, dest);
try {
Process proc = new ProcessBuilder(cmd).start();
BufferedReader inp = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = null;
while ((line = inp.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
<小时/>

一个组合,可以在WindowsLinux环境下工作。

private static final String OS = System.getProperty("os.name");
private static String src = null;
private static String dest = null;
private static List<String> cmd = null;

public static void main(String[] args) {
if (OS.toLowerCase().contains("windows")) { // setup WINDOWS environment
src = "C:\\srcDir";
dest = "C:\\destDir";
cmd = Arrays.asList("xcopy", src, dest, "/s", "/e", "/i", "/h");

System.out.println("on: " + OS);
} else if (OS.toLowerCase().contains("linux")){ // setup LINUX environment
src = "srcDir/";
dest = "~/destDir/";
cmd = Arrays.asList("/bin/bash", "-c", "cp", "r", src, dest);

System.out.println("on: " + OS);
}

try {
Process proc = new ProcessBuilder(cmd).start();
BufferedReader inp = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = null;
while ((line = inp.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}

}

关于java - 如何在 loadonstartup 时复制嵌套文件夹内的文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59170151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com