小弟初学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();
}
用字节流读取单个字节,等于将汉子分开来显示,所以出来的是乱码,应该是这个原因吧。
除了 音频,图片等等这些用字节, 其他诸如文本文档,用字符流