A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小周务商 金牌黑马   /  2014-5-6 14:32  /  1016 人查看  /  5 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文


public class InputStreamDemo1 {
        public static void main(String[] args) throws IOException {
               
                FileInputStream fileInputStream =new FileInputStream(new File("E:\\a.txt"));
               
                byte[] buf =new byte[1024];
                int length =0;
                while((length=fileInputStream.read(buf))!=-1){
                       
                        System.out.println(new String(buf,0,length));
                }
                fileInputStream.close();
        }
}

点评

字节流读取中文会出现乱码很正常.因为你存储文件的编码与读取时指定编码不一致导致的.视频里解释很清楚,认真看一遍视频  发表于 2014-5-6 18:25

5 个回复

倒序浏览
看下你的文本文件是否以UTF-8编码形式保存的。
package test;
import java.io.*;
public class InputStreamDemo1 {
        public static void main(String[] args) throws IOException {
               
                FileInputStream fileInputStream =new FileInputStream(new File("E:\\b.txt"));
               
                byte[] buf =new byte[1024];
                int length =0;
                while((length=fileInputStream.read(buf))!=-1){
                        
                        System.out.println(new String(buf,0,length));
                }
                fileInputStream.close();
        }
}
套用了你的代码,并自己新建了a.txt文本并没有出问题,执行结果:
风格反对感规范化个
规范化个分
法国号
法国号
法国号
好几个环节
大塞弗

然后我将a.txt另存为b.txt,代码a.txt换成b.txt,将编码形式改为UTF-8,执行结果
娉曞浗鍙?
娉曞浗鍙?
濂藉嚑涓幆鑺?
澶у寮?


所以你可以检查一下a.txt编码形式是否和你系统默认编码格式一样

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
heima_xyu 发表于 2014-5-6 14:47
看下你的文本文件是否以UTF-8编码形式保存的。
package test;
import java.io.*;

谢谢。可是在哪里看呢。怎么检查?
回复 使用道具 举报
小周务商 发表于 2014-5-6 17:32
谢谢。可是在哪里看呢。怎么检查?

你可以打开a.txt,在另存为,弹出的对话框,看下编码默认是什么,因为会默认为你打开的a.txt的编码表。
或者参考毕老师的字符编码,学到的转换方法来打印。
回复 使用道具 举报
heima_xyu 发表于 2014-5-6 17:46
你可以打开a.txt,在另存为,弹出的对话框,看下编码默认是什么,因为会默认为你打开的a.txt的编码表。
...

嗯。可以了。谢谢。指定了一个码表就可以读取正常了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马