C++ プロセスによって書き込まれたファイルから文字を読み取る必要があります。
文字は確かに ASCII の範囲にありますが、Java の文字は 16 ビットで、C++ の文字は 8 ビットであるため、ファイルを読み取る最良の方法は何でしょうか?
私が知っているのは、C++ プロセスが次のように ASCII 範囲で文字を書き込むことだけです。
重要なのは、ファイルのエンコーディングを指定することです。以下を使用できます。
File myFile = new File("file.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f),"ascii"));
JavaでASCIIファイルを読み取ると、Javaでは16ビット文字として正しく表されます。java charをテキストファイルに書き込むと、ascii文字の範囲内にある限り、8ビットASCII文字としてディスクに書き込まれます。
ファイルを1行ずつ読み取るコード:
File file = new File("file.txt");
br = new BufferedReader(new FileReader(file));
String line = br.readLine();
while (line != null) {
// Do something with the line
line = br.readLine();
}
Guavasファイルクラスを使用してみてください。
public static void main(String[] args) {
try {
List<String> lines = Files.readLines(new File("filename"),
Charsets.UTF_8);
//get characters from lines
} catch (IOException e) {
logger.error(e, e);
}
}
また、そのクラスの他の Read メソッドを試して、うまく機能するかどうかを確認することもできます。