使用arraylist读取.txt文件时如何忽略主文件夹中的某些文件
how to Ignore certain files from main folder when reading .txt file using arraylist
我有一个主文件夹 (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);
}
我有一个主文件夹 (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);
}