Java读取文件得到了领先的BOM [???]
发布时间:2020-12-15 02:26:13 所属栏目:Java 来源:网络整理
导读:我正在逐行阅读包含关键字的文件,发现一个奇怪的问题. 如果内容相同,我希望相互跟随的行,它们只应处理一次.喜欢 sonysony 只有第一个正在处理. 但问题是,java不会将它们视为平等. INFO: [,s,o,n,y]INFO: [s,y] 我的代码如下所示,问题出在哪里? FileReader f
我正在逐行阅读包含关键字的文件,发现一个奇怪的问题.
如果内容相同,我希望相互跟随的行,它们只应处理一次.喜欢 sony sony 只有第一个正在处理. INFO: [,s,o,n,y] INFO: [s,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; } 更新: 似乎第一行中有一个空间,但实际上并非如此,并且修剪方法对我不起作用.他们不一样: INFO: [,y] INFO: [,y] 我不知道java添加的第一个Char是什么. 解决了:问题已经解决了BalusC’s solution,感谢指出它的BOM问题,这有助于我快速找到解决方案. 解决方法
尝试在读取行的开头和结尾处修剪空格.只需用以下内容替换你的:
while ((strLine = bufferedReader.readLine()) != null) { strLine = strLine.trim(); logger.info(Arrays.toString(strLine.toCharArray())); if(strLine.contentEquals(prevLine)){ logger.info("Skipping the duplicate lines " + strLine); continue; } prevLine = strLine; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |