Java - 从 File[] 数组中删除一些文件

标签 java arrays

我有数组 File[] polFiles。有些文件可以被另一个函数删除,我编写了函数来从数组中清除远程文件。例如,如果 File[] polFiles 中有 P0、P1、P2、P3、P4,被 P1 和 P2 删除,则现在 polFiles 将由 P0、P2 和 P4 组成。怎样制作呢?我编写了简单的代码,但它会抛出任何异常和错误。

int delcount = 0;
for (File file : files) {
    if (!file.exists()) {
        delcount++;
    }
}
File[] newfiles = new File[files.length-delcount];
int fcount = 0;
for (int i = 0; i < newfiles.length; i++) {
    if (!files[i].exists()) {
        fcount++;
        for (int j = i; j < files.length-fcount-1; j++) {
            newfiles[j] = files[j+fcount];
        }
    } else {
        newfiles[i] = files[i+fcount];
    }
}
System.arraycopy(newfiles, 0, files, 0, newfiles.length);
for (int i = newfiles.length; i < files.length; i++) {
    files[i] = null;
}

哪里出错了?此代码抛出 Null 异常并且无法正常工作。它仅从数组中删除第一个文件

最佳答案

使用列表比使用数组容易得多。除非你有充分的理由,否则放弃数组......在 Guava 的帮助下这变得容易得多:

FluentIterable.from(files)
    .filter(new Predicate<File>() {
        @Override
        public boolean apply(@Nullable File file) {
            return file.exists();
        }
    }).toList();

关于Java - 从 File[] 数组中删除一些文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27258772/

相关文章:

c# - 是否可以在不初始化内部对象的情况下将数组初始化为容量?

Java ImageIO.read 导致 OSX 挂起

java - android开发的屏幕分辨率有多大问题

java - 为什么 Hadoop FileSystem.get 方法需要知道完整的 URI 而不仅仅是方案

php - 使用 PHP 对 MySQL 表中特定字段的总值进行求和,并以数组形式提取整行

javascript - 循环遍历 JQuery 数组

arrays - Bash JSON 获取数组的长度

java - 如何将 varargs 传递给 @GET 请求

java - 如何在不计算 java 文件中的原始单词的情况下查找重复单词?

arrays - 如何在 Robo3T 中将结果从一个查询传递到另一个查询