0

我正在使用以下方法将字符串从文件加载到变量。

private static String readFile(String path) throws IOException {
  FileInputStream stream = new FileInputStream(new File(path));
  try {
    FileChannel fc = stream.getChannel();
    MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
    /* Instead of using default, pass in a decoder. */
    return Charset.defaultCharset().decode(bb).toString();
  }
  finally {
    stream.close();
  }
}

问题是我的变量中有转义字符。我希望我的变量包含:

some string

但它看起来像:

some string&#xd

我该如何改进我的方法以不允许这样做?

4

2 回答 2

1

您可以改用 Reader,特别是 BufferedReader 从 TXT 文件中读取行:

BufferedReader br = new BufferedReader(new FileReader(path));
String line = br.readLine(); // this strips line termination characters for you

如果您想阅读整个文件,有许多提供此功能的实用程序类(如 Google Guava):

String contents = Files.toString(new File(path), charset);
于 2013-01-21T13:38:20.710 回答
0

我认为您的.txt文件中有一些隐藏字符。

你可以试试:

return Charset.defaultCharset()
   .newDecoder()
   .onMalformedInput(CodingErrorAction.IGNORE)
   .onUnmappableCharacter(CodingErrorAction.IGNORE)
   .decode(bb)
   .toString()
于 2013-01-21T13:46:57.487 回答