Java - 不正确的阅读器

标签 java file-io bufferedreader reader

我正在尝试读取包含特殊字符的 txt 文件,但其中一些字符被读取为正方形。

这里是代码。

package reader;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Reader {
    public static void main(String[] args) throws IOException {
        File file = new File("cfg.txt");
        BufferedReader reader = new BufferedReader(new FileReader(file));
        String line;
        while( (line=reader.readLine()) != null ){
            System.out.println(line);
        }
    }
}

文件:

ÉCltTctocsWicÉ#V^ÊûJö=

控制台输出:

�CltTctocsWic�#V^��J�=

该项目正在使用 UTF-8。已经尝试过 FileInputStream 并得到相同的结果。

我需要另一个阅读器吗?

编辑:已解决

感谢@shmosel,文本文件不是 UTF-8。
感谢@ACV,InputStreamReader 是必要的。

这里是新代码:

public class Reader {
    public static void main(String[] args) throws IOException {
        File file = new File("cfg.txt");

        /*to write*/
        BufferedWriter ou = new BufferedWriter(
                new OutputStreamWriter(
                        new FileOutputStream(file),"UTF8"));
        ou.append("ÉCltTctocsWicÉ#V^ÊûJö=");
        ou.close();

        /*to read*/
        BufferedReader in = new BufferedReader(
           new InputStreamReader(
                  new FileInputStream(file), "UTF8"));
        String line;
        while( (line=in.readLine()) != null ){
            System.out.println(line);
        }
    }
}

最佳答案

BufferedReader in = new BufferedReader(
           new InputStreamReader(
                      new FileInputStream(fileDir), "UTF8"));

所以基本上 UTF-8 文件必须像二进制文件一样读取 - 使用 FileInputStream

关于Java - 不正确的阅读器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47822848/

相关文章:

java - 更新小部件和 Activity 的数据

android - 如何将内存中的Android文件权限更改为MODE_PRIVATE?

java - 打开 OBS 正在写入的文件进行读取

Java 文件 IO 和 "access denied"错误

Java,限制BufferedReader读取时间

java - 在 JSP 中显示 BufferedReader

java - Firebase 如何通过按键检索数据

java - 用 Java 编写 Com 对象

java - 为什么 Apache https 服务器不在 URL 中发送端口号?

java - 如何在java中读取文本文件的第一行并打印出来?