gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 00:52:46 26 4
gpt4 key购买 nike

我正在逐行读取包含关键字的文件,发现一个奇怪的问题。我希望如果内容相同则相互跟随的行应该只处理一次。喜欢

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添加的第一个Char是什么。

已解决:问题已通过 BalusC's solution 解决,感谢指出是 BOM 问题,帮助我快速找到解决方案。

最佳答案

尝试在读取的行的开头和结尾修剪空白。只需将您的 while 替换为:

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

关于Java 读取文件获得了领先的 BOM [  ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6290261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com