gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:01:45 25 4
gpt4 key购买 nike

我有数组 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/

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