1

我需要从 C++ 进程编写的文件中读取字符。
这些字符肯定在 ASCII 范围内,但由于 Java char 是 16 位,而 C++ char 是 8 位,那么读取文件的最佳方法是什么?

我只知道C++进程在ascii范围内写入chars如下:file<

4

3 回答 3

1

关键是指定文件编码。你可以使用:

File myFile = new File("file.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f),"ascii"));
于 2013-02-27T09:37:22.893 回答
0

尝试使用 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 方法,看看它们是否能很好地为您服务。

于 2013-02-27T09:37:29.953 回答
0

当您在 Java 中读取一个 ascii 文件时,它将在 java 中正确地表示为 16 位字符。当您将 java char 写入文本文件时,只要您保持在 ascii 字符范围内,它将作为 8 位 ASCII 字符写入磁盘。

逐行读取文件的代码:

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();
}
于 2013-02-27T10:02:30.990 回答