如何在使用arraylist读取.txt文件时忽略主文件夹中的某些文件



我有一个主文件夹(config(和一个名为ignore.txt的文本文件。我在ignore.txt文件中提到了主文件夹中需要忽略的几个文件。我需要一些帮助如何调用ignore.txt文件来执行和忽略主文件夹(config(中的文件。

public class filetext {
public static void main(String[] args) throws FileNotFoundException {
File file = new File("/path to /Configs");
ArrayList<File> fileList = new ArrayList<File>(Arrays.asList(file.listFiles()));

System.out.println(fileList);

File ignorefile = new File("/path to /ignore.txt");
Scanner sc = new Scanner(ignorefile); 
ArrayList<List> ignorelist = new ArrayList<List>();
System.out.println(ignorefile);

if(ignorelist.contains(file)); 
fileList.remove(file);
System.out.println(ignorelist);
}

据我所知,您希望删除"被忽略的文件";从您的文件列表中。

为了移除加载的";被忽略的名称";从文件列表中,您可以将代码编辑为这样的内容,尽管这不是一种有效的方法:

public static void main(String[] args) throws FileNotFoundException {
File file = new File("path of my main folder");
ArrayList<File> fileList = new ArrayList<File(Arrays.asList(file.listFiles()));

File ignoreFile = new File("path to /ignore.txt");
Scanner sc = new Scanner(ignorefile); 
ArrayList<String> listOfLines = new ArrayList<>();
while (sc.hasNextLine()) 
listOfLines.add(scanner.nextLine());

for(File f : fileList){
if(listOfLines.contains(f.getFileName())
fileList.remove(f);
}
// print the fileList again
} 

此版本使用NIO和流。

public static void main(String[] args) throws IOException {
Path dir        = Path.of(args[0]);
Path ignoreFile = Path.of(args[1]);
HashSet<Path> ignore = new HashSet<Path>();
ArrayList<Path> fileList = new ArrayList<Path>();
try(Stream<String> stream = Files.lines(ignoreFile)) {
stream.map(Path::of).forEach(ignore::add);
}
try(Stream<Path> stream = Files.list(dir)) {
stream.filter(p -> !ignore.contains(p) && !ignore.contains(p.getFileName()))
.forEach(fileList::add);
}
System.out.println("Files#"+fileList.size()+' '+fileList);
}

最新更新