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 に答える