我正在分析Web访问日志,并尝试找出访问日志中仅请求过一次的所有唯一对象(任何文件或任何路径)。每次程序写入文本文件时,文本文件的内容如下所示:
.as-console-wrapper { max-height: 100% !important; top: 0; }
我想检查要写入文本文件的行是否已存在于文本文件中。换句话说,如果它在文本文件中确实存在,那么什么也不做,跳过它并分析下一行。如果没有,则将其写入文本文件。
我尝试使用/~scottp/publish.html
/~ladd/ostriches.html
/~scottp/publish.html
/~lowey/
/~lowey/kevin.gif
/~friesend/tolkien/rootpage.html
/~scottp/free.html
/~friesend/tolkien/rootpage.html
.
.
.
或equals
,但它似乎不起作用,这里是我的代码的一小部分:
contains
我该怎么做才能真正执行支票?
答案 0 :(得分:1)
正如@JB Nizet评论的那样,你应该使用Set
Set<String> set = new HashSet<String>();
BufferedReader reader = new BufferedReader(new FileReader(new File("/path/to/yourFile.txt")));
String line;
while((line = reader.readLine()) != null) {
// duplicate
if(set.contains(line))
continue;
set.add(line);
// do your work here
}
答案 1 :(得分:1)
也许这样简单:
try (BufferedReader br = new BufferedReader(new FileReader(yourFilePath))) {
boolean lineExists = false;
String currentLine;
while ((currentLine = br.readLine()) != null) {
if (currentLine.trim().equalsIgnoreCase(requestFileName.trim())) {
lineExists = true;
break;
}
}
br.close();
if (!lineExists) {
bw.write(requestFileName);
bw.newLine();
}
}
catch (IOException e) {
// Do what you want with Exception...
}