首先,我是一个新手,我正在尽我所能学习和发展,并且我认真对待你所有的答案。
所以从根本上说,我要做的是:我从具有指定编码器(ISO-8859-1)的多个文件夹中读取多个文件,并且我必须输出一些信息,我会发现这些信息会被某些人引导关键字。例如:我有300个文件,我需要搜索只在关键字ENTER之后放置并随XX开头的随机单词,让我们说。因此,如果我找到包含此信息的180/300文件,我必须在某处输出这些单词。
我在代码下面发帖,我已经努力逐行阅读所有这些文件。我认为我需要的部分是记录器,如果我没有弄错的话,还有一个叫做字符串标记器的东西。我想我有一个记录器的起点(我发布它也是如此)但我不知道如何将它应用于我的多个文件以及如何使用字符串标记器。感谢任何帮助,谢谢!
记录器的起点:
public static class Logs {
static FileHandler fileTxt;
static SimpleFormatter formatterTxt;
static public void logging() throws IOException {
Logger logger = Logger.getLogger(ListFiles.class.getName());
logger.setLevel(Level.ALL);
fileTxt = new FileHandler("C:\\Users\\TG\\eclipse-
workspace\\ListFiles\\src\\file.txt");
formatterTxt = new SimpleFormatter();
fileTxt.setFormatter(formatterTxt);
logger.addHandler(fileTxt);
logger.info("Random line for testing purposes");
}
}
代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
import java.util.stream.Stream;
public class ListFiles {
public static void main(String[] args) {
ListFiles listFiles = new ListFiles();
listFiles.listAllFiles("C:\\Users\\TG\\Desktop\\Q");
}
public void listAllFiles(String path){
try(Stream<Path> paths = Files.walk(Paths.get(path))) {
paths.forEach(filePath -> {
if (Files.isRegularFile(filePath)) {
try {
readContent(filePath);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void readContent(Path filePath) throws IOException{
System.out.println("Reading file " + filePath);
Charset charset = Charset.forName("ISO-8859-1");
List<String> fileList = Files.readAllLines(filePath, charset);
System.out.println("" + fileList);
System.out.println("Finished reading!");
}
}