我正在逐行阅读一个包含关键词的文件,发现了一个奇怪的问题。
如果它们的内容相同,我希望连续的行只被处理一次。比如:
我不知道Java添加的第一个字符是什么。
解决:问题已使用 BalusC的解决方案解决,感谢您指出了这是BOM问题,这帮助我快速找到了解决方案。
sony
sony
只有第一个被处理。 但问题是,Java不将它们视为相等。
INFO: [, s, o, n, y]
INFO: [s, o, n, y]
我的代码如下,有什么问题吗?
FileReader fileReader = new FileReader("some_file.txt");
BufferedReader bufferedReader = new BufferedReader(fileReader);
String prevLine = "";
String strLine
while ((strLine = bufferedReader.readLine()) != null) {
logger.info(Arrays.toString(strLine.toCharArray()));
if(strLine.contentEquals(prevLine)){
logger.info("Skipping the duplicate lines " + strLine);
continue;
}
prevLine = strLine;
}
更新:
第一行似乎有一个前导空格,但实际上并没有,而trim
方法对我无效。它们不是相同的:
INFO: [, s, o, n, y]
INFO: [ , s, o, n, y]
我不知道Java添加的第一个字符是什么。
解决:问题已使用 BalusC的解决方案解决,感谢您指出了这是BOM问题,这帮助我快速找到了解决方案。