Java 使用do while和for循环比较文件

Java 使用do while和for循环比较文件,java,loops,Java,Loops,让我先说我愿意找到更好的方法来处理这件事。我试过几种不同的方法,但我就是不明白 情况是有两个文件夹的文件。文件夹1中的文件每天自动从其他来源下载。需要做的是通过第二个程序处理新文件,然后将最终结果添加到第二个文件夹中 我的方法是使用几个ListArray并比较每个列表中的文件。然后,即使由于某种原因,这个程序停止了几天,它仍然可以赶上处理文件的速度。然而,比较这些文件并不能正常工作,我得到了越界错误。两个列表中的文件都以朱利安格式的日期命名,因此应该可以进行比较。代码如下: for (int i

让我先说我愿意找到更好的方法来处理这件事。我试过几种不同的方法,但我就是不明白

情况是有两个文件夹的文件。文件夹1中的文件每天自动从其他来源下载。需要做的是通过第二个程序处理新文件,然后将最终结果添加到第二个文件夹中

我的方法是使用几个ListArray并比较每个列表中的文件。然后,即使由于某种原因,这个程序停止了几天,它仍然可以赶上处理文件的速度。然而,比较这些文件并不能正常工作,我得到了越界错误。两个列表中的文件都以朱利安格式的日期命名,因此应该可以进行比较。代码如下:

for (int i = 0; i < files.size(); i++) {
    file = files.get(i);
    String fileDOY = file.substring(4, 7);
    int fileDOYint = Integer.parseInt(fileDOY);
}

boolean x = false;
ArrayList<String> dest = destin(name);
int j = 0;
do {
    String destination = dest.get(j);
    String dayDest = destination.substring(8, 10);
    int dayInt = Integer.parseInt(dayDest);

    if (dayInt == fileDOYint) {
        x = true;
    } 
    j++;
} while ((j < (dest.size() - 1)) || !x);

if (!x) {
    System.out.println("work " + file);
}
输出除错误外不呈现任何内容。当我将最后一个if语句中的变量更改为processwhen true时,它会一直工作,直到出现丢失的文件,然后出现错误。因此,它似乎正确地完成了循环,但有些东西没有命中最后一个if语句。该错误表示do开始后第一行出现问题。

将do while条件中的| |更改为&&

} while ((j < (dest.size() - 1)) && !x);

如果您从未找到fileDOYint,那么您的循环将一直持续下去,直到您得到一个越界异常,而不管j是什么。

我们需要知道或了解命运的作用。它似乎返回了一个空的ArrayList。通常,当java中出现错误时,这些错误会有消息和/或堆栈跟踪。它们有助于在代码中找到错误的来源。为什么不在处理并保存到folder2后从folder1中删除文件呢。为什么要把文件放在两个点上,然后首先比较呢?@SamTebbs33-Dang,我没把它加进去。很抱歉。它是对填充数组的方法的调用。它有点复杂,因为我只需要将某些文件添加到数组中。@SamIam Yes,正如我所说的,它引用回字符串destination=dest.getj;请输入密码。谢谢你,山姆,我是。你完全正确。我本以为得到一个或另一个条件就会结束循环,但我的逻辑肯定有缺陷。