package cn.itcast_02;
import java.io.FileInputStream;
import java.io.IOException;
/*
* 字节输入流操作步骤:
* A:创建字节输入流对象
* B:调用read()方法读取数据,并把数据显示在控制台
* C:释放资源
*
* 读取数据的方式:
* A:int read():一次读取一个字节
* B:int read(byte[] b):一次读取一个字节数组
*/
public class FileInputStreamDemo {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("FileOutputStreamDemo.java");
int by = 0;
// 读取,赋值,判断
while ((by = fis.read()) != -1) {
System.out.print((char) by);
}
// 释放资源
fis.close();
}
}
上面的代码读取英文,数字等都没问题,唯独中文出现了问题.
原因在于,每次读取到一个字节就通过 (char)by 强制转换成一个字符,而 中文=1个字符=两个字节 ,相当于一个中文读取到一半就被转换了,所以中文读取出错
package cn.itcast_03;
import java.util.Arrays;
/*
* 计算机是如何识别什么时候该把