加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java读取文件得到了领先的BOM [???]

发布时间:2020-12-15 02:26:13 所属栏目:Java 来源:网络整理
导读:我正在逐行阅读包含关键字的文件,发现一个奇怪的问题. 如果内容相同,我希望相互跟随的行,它们只应处理一次.喜欢 sonysony 只有第一个正在处理. 但问题是,java不会将它们视为平等. INFO: [,s,o,n,y]INFO: [s,y] 我的代码如下所示,问题出在哪里? FileReader f
我正在逐行阅读包含关键字的文件,发现一个奇怪的问题.
如果内容相同,我希望相互跟随的行,它们只应处理一次.喜欢

sony
sony

只有第一个正在处理.
但问题是,java不会将它们视为平等.

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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读