『小白求指点』字节流读取进来后显示乱码

小弟初学JAVA,现在遇见的问题是用字节流导入文本后打印显示的是乱码,找不出哪里有问题了,请求大神指点啊,非常感谢啊!!
图片说明

public static void main(String[] arge) {

    File file = new File("D:\\test.txt");

    try {
        FileInputStream fis = new FileInputStream(file);    // new 一个字节流;

        @SuppressWarnings("resource")
        InputStreamReader isr  =  new InputStreamReader(fis);  //将字节流转换成字符流;

        char[] ch = new char[1000];         //创建字符数组;

        while( isr.read(ch) != -1 )          //  输出数组;
        {           

            System.out.println(ch);

            }            

读取字节 你的写法 会有负数 不存在ascii 编码 所以会乱码 应该这样写
FileInputStream fis = new FileInputStream(file); // new 一个字节流;
int len = fis.available(); //获取文件流中文件内容的字节长度
byte[] buf = new byte[len]; //创建一个缓存
fis.read(buf);//读取对应长度的字节内容到缓冲中
System.out.println(new String(buf,0,len));

这个我今天理解了,一个汉字是由多个字节组成的

while(b!=-1){
char ch=(char) b;
System.out.print(ch);
b=fin.read();
}

用字节流读取单个字节,等于将汉子分开来显示,所以出来的是乱码,应该是这个原因吧。

除了 音频,图片等等这些用字节, 其他诸如文本文档,用字符流