黑马程序员,Java I/O流学习

------- android培训java培训、期待与您交流! ----------



java.lang.Object
  继承者 java.io.Reader
      继承者 java.io.InputStreamReader
          继承者 java.io.FileReader





如何选用哪种流读取文件?
io流分为字节流和字符流,根据文件的内容,选取适用的输入输出流:

对于像.txt、.java、.c、.bat等之类的文件可以选取字符流,读出的内容是可读的。

对于像.mp3、.avi、.rmvb等文件,这些是二进制文件,如果以字符流读取会出现乱码现象。


何时使用转换流?
如果使用非默认编码保存文件或者读取文件时,需要用到转换流,因为字节流的重载构造方法中有指定编码格式的参数,而FileReader 与 FileWriter 是默认编码的文本文件

比如:
当我们使用默认GBK编码保存文本时,默认情况下下面的两条是一样的
new OutputStreamWriter(new FileOutputStream("out.txt"))
new FileWriter("out.txt")
当要求保存为其他编码比如GBK时,就要这样写
new OutputStreamWriter(new FileOutputStream("out.txt"),"GBK")
而如果要读取一个GBK编码的文本文件时,同样的要用
new InputStreamReader(new FileInputStream("in.txt"),"GBK");
而不能用new FileWriter("in.txt")
2.
当文件是字节文件时:
     读取:FileInputStreamBufferedReader
     输出:FileOutputStream  BufferedWriter
当文件是字符流时:需要转换。
计算机处理的是字节数据
          读取时:将字符转换为字节,FileReader  BufferedRead
          输出时:将字节转换为字符,FileWriter BufferedWriter
总之,不论是字节文件还是字符文件,提高效率一般会用转换流的。

重要:而且Java内部处理字节流时,使用的是默认编码,Java在写入时,假如设置的编码非默认编码,将非默认编码的串传递给Java内部,Java内部将编码转换为默认编码的串,写入文件或者网络时,再将默认编码的串转换为用户设置的非默认编码。Java这样做,是为了编码的统一性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值