本帖最后由 noiary 于 2014-10-26 21:45 编辑
io学得也是懵懵懂懂,迷迷糊糊.
刚刚复习FileInputStream,莫名觉得它的read()方法和FileReader的read()看起来似乎一样啊.都是返回int,都是以-1为结尾标识.
那为什么一个叫字符流一个叫字节流?
百思不解下去百度,得出如下答案:
FileInputStream字节流是 以一个一个字节来读。
FileReader字符流是 以一个一个字符来读取的。
看完好像明白了什么..又好像没太明白..
所以字节写了个Demo:
- /*
- 测试
- FileInputStream和FileReader的read()方法
- 返回的int类型编码是否一致
- */
- import java.io.*;
- public class Demo {
- public static void main(String[] args) throws IOException{
- FileInputStream fis = new FileInputStream("Demo.txt");
- FileReader fr = new FileReader("Demo.txt");
-
- fisRun(fis);
- frRun(fr);
-
- }
-
- public static void fisRun(FileInputStream fis) throws IOException{
- int len = 0;
- System.out.println("fis:\t");
- while((len = fis.read()) != -1) {
- System.out.print((char)len);
- }
- System.out.println();
- }
-
- public static void frRun(FileReader fr) throws IOException {
- int ch = 0;
- System.out.println("fr:\t");
- while((ch = fr.read()) != -1) {
- System.out.print((char)ch);
- }
- System.out.println();
- }
- }
复制代码
运行结果出乎意料,居然也是一样的!
突然想到是不是Demo.txt编码问题,
我机器默认用的是GBK编码,所以读出来的都是一样的数字,
然后我改成了UTF-8,结果果然就不一样了!
|