【问题标题】:Strange char after reading from txt file从txt文件读取后出现奇怪的字符
【发布时间】:2015-04-11 07:27:55
【问题描述】:

我有一个包含三行整数的 txt 文件,将它们添加到列表后,我在第一个索引的开头发现了一个奇怪的字符。我使用 InputStream、BufferedReader 和 StringBuilder 来读取文件。我尝试在几个地方使用 println() 语句进行调试,但我仍然无法弄清楚该字符的来源。

 File selectedFile = fileChooser.getSelectedFile();
                    inputStream = new FileInputStream(selectedFile);
                    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
                    StringBuilder out = new StringBuilder();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        out.append(line);
                        items.add(line);
                    }

当我尝试将打印输出列表项的输出复制到这篇文章时,我所说的字符没有显示出来,所以我将发布一个屏幕截图:

http://imgur.com/gjaF3no

http://imgur.com/JHAH6mV

第一个是整个列表,第二个应该更清楚地显示我正在谈论的字符,它看起来像“3”之前的一个点。任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 您是否尝试过创建一个新的测试文件并从中读取?它会重现这个问题吗?
  • 文本文件是否有BOM
  • @Seelenvirtuose 我不这么认为。
  • @coder 我现在感觉很蠢,我已经花了好几个小时调试整个程序,但出于某种原因我没有想到这一点。我尝试了一个新的测试文件并且字符消失了。谢谢!
  • 您可以尝试使用默认字符集的 FileReader。如果尝试使用输入流构造函数并选择您的字符集

标签: java inputstream bufferedreader


【解决方案1】:

您可以尝试通过执行以下操作删除所有控制字符(奇怪字符):

strangeString.replaceAll("\\p{Cntrl}", ""); 

参考:Java - removing strange characters from a String

【讨论】:

    【解决方案2】:

    感谢大家的帮助。问题实际上出在@coder这样的原始txt文件中

    【讨论】:

      猜你喜欢
      • 2014-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      • 2017-07-26
      • 1970-01-01
      相关资源
      最近更新 更多