zkzk7410
2017-04-20 11:41
采纳率: 68.8%
浏览 1.5k
已采纳

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

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

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • weixin_38405298 2017-04-20 12:22
    已采纳

    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);
    
                }            
    
    已采纳该答案
    打赏 评论
  • 东哥他爸 2017-04-21 04:10

    读取字节 你的写法 会有负数 不存在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));

    打赏 评论
  • zkzk7410 2017-04-21 13:18

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

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

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

    打赏 评论
  • 香格里拉& 2020-02-19 21:45

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

    打赏 评论

相关推荐 更多相似问题