gpt4 book ai didi

java - FileUtils.listFiles 和 IOFileFilter

转载 作者:行者123 更新时间:2023-11-29 05:36:05 31 4
gpt4 key购买 nike

您好,我想递归检查某个目录的文件和子文件夹是否包含某个字符串,所以尝试了这个

package com.tecsys.sm.test;

import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.commons.io.filefilter.TrueFileFilter;

import com.tecsys.sm.util.WindowsDirectories;

public class ApacheListOfFiles {
public static void main(String[] args){
final String envName= "test_trunkcpsm";
WindowsDirectories wd = new WindowsDirectories();
File startPath = new File(wd.getStartMenuDir()+File.separator+"Programs");
Collection<File> listF = FileUtils.listFiles(startPath, new IOFileFilter() {

@Override
public boolean accept(File dir, String name) {

return false;
}

@Override
public boolean accept(File file) {
// TODO Auto-generated method stub

if(file.getName().contains(envName)){
System.out.println(file);
return true;
}else
return false;
}
},TrueFileFilter.INSTANCE);
System.out.println(listF.size());
Iterator<File> it = listF.iterator();
while(it.hasNext()){
System.out.println("Le fichier est : "+it.next());
}
}
}

输出如下:

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\TECSYS\iTopia Environments\test_trunkcpsm 0

所以他找到了我正在搜索的文件,但仍然返回一个空列表,这是为什么?而且当我们在做的时候,第一个 accept 什么时候被调用?我在理解这门课的工作原理时遇到了一些困难。

最佳答案

它对我有用,可能是因为在第一个 accept() 中返回了 false

您可能还想查看 DelegateFileFilter 以实现单个 accept()

或者使用这个单一的调用来完成工作:

Collection listF = FileUtils.listFiles(
startPath, new WildcardFileFilter("*" + envName + "*"), TrueFileFilter.TRUE);

关于java - FileUtils.listFiles 和 IOFileFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19500680/

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