【问题标题】:Looping through 2 separate directories using Java & in Bash在 Bash 中使用 Java 和循环遍历 2 个单独的目录
【发布时间】:2016-05-19 14:22:05
【问题描述】:

我正在编写一个脚本,它在 directory1 中选择一个名为 f2 的文件夹,并交叉检查 directory2 中所有文件夹的名称是否匹配,如果为真,它将 f2 从 directory1 复制到 f2 的子目录(文件夹同名)位于目录 2 中。目前,我正在尝试使用 Apache Commons 实现 Java,但我更关心 bash 实现,这就是我目前所拥有的:

Java 实现:

import org.apache.commons.lang3.*;

private String src = "";
private String dest = "";

private void setName(String source, String destination) {
    src = source;
    source = destination;
}

private String getSrcName() {
    return src;
}

private String getDestName() {
    return dest;
}

private void loop() {
    File srcDir = new File("\\IGSASCEWGSHARDY\Common Services\Data Management Unit\Surface Water\Field Notes (historic)\ ");
    File destDir = new File("\\IGSASCEWFSZEUS\DataArchive\Surface Water\Data Sites\ ");

        for(int i = 0; i < Files.list(Paths.get(srcDir)).count(); i++) {
            for(int j = 0; j < Files.list(Paths.get(destDir)).count(); j++) {
                if(srcDir.getSrcName().equals(destDir.getDestName())) {

                    FileUtils.copyDirectory(srcDir, destDir);
                    j = 0;
                    System.out.println("Same!");

                } else {
                    System.out.println("Not same!")
                }
            }
        }
    }
}

这是我的批处理文件实现:

::@ECHO OFF
::setlocal EnableDelayedExpansion
for /d %%i in ("\\IGSASCEWGSHARDY\Common Services\Data Management Unit\Surface Water\Field Notes (historic)\*") do (
    for /d %%j in ("D:\DataArchive\Surface Water\Data Sites\*") do (
        set srcdir="%%~nxi"
        set destdir="%%~nxj"
        if !srcdir! == !destdir! ( echo Same! timeout /t -1 ) else (echo Notsame!)
        echo %srcdir%
        ping 130.11.160.2
    )
)

提前感谢大家的帮助!

编辑

抱歉,我没有说明错误:我在 Java 的循环部分上画了一个空白,因为通过查看它,我知道这是不对的,但是我只是想知道去哪里从这里;我想只保留一个 for 循环迭代,因为我认为递归有点太混乱了。对于批处理实现,它总是会出错,即使我知道两个目录中都有同名的文件,我也永远不会得到匹配

【问题讨论】:

  • 你正在逃避",虽然不要结束String
  • 您的问题到底是什么?什么不工作?请附上MCVE
  • 我很抱歉,基本上是批处理文件,它总是出错,而对于 Java 文件,我知道编码很垃圾,所以我想知道我应该往哪个方向发展

标签: java loops directory


【解决方案1】:

你的java代码有很多错误:

  • srcDir.length() 如果文件由 srcDir 指向,则返回字节长度
  • destDir 相同
  • 如果srcDir.equals(destDir)true,则将j 重置为0。因此它将无限重复相同的循环
  • srcDir.equals(destDir) 检查文件是否相等。它们指向两个不同的文件,所以这也是一个错误。可能您需要检查名称。类似srcDir.getName().equals(destDir.getName())

检查此错误并在更新后调整您的问题。

【讨论】:

  • 好吧,就篇幅而言,我实现了以下代码: Files.list(Paths.get("insert path here")).count();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-20
  • 2012-07-25
  • 1970-01-01
  • 2022-10-04
  • 1970-01-01
  • 2016-03-24
相关资源
最近更新 更多