字节流和字符流

字节流和字符流 




      字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点。所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列。字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串;2.字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
       在整个IO包中流的操作分为两种:
      一、字节流:字节输出流OutputStream、字节输入流InputStream;
      二、字符流:字符输出流Writer字节输入流Reader;
       操作的基本步骤如下:
      1、使用File找到一个文件;
      2、使用字节流或字符流的子类为OutputStream、InputStream、Writer、Reader进行实例化操作 ;
      3、进行读写的操作;
      4、关闭close在流的操作中最终必修进行关闭。

   字节输出流OutputStream
       在Java   io中OutputStream是字节输出流的最大父类。此类是一个抽象类所以使用时修要依靠子类进行实例化操作。
      如果此时要完成文件的输出操作则使用FileOutputStream为OutputStream进行实例化操作:
      OutputStream out   =   new   FileOutputStream(File f) 
      OutputStream提供了一下的写入数据的方法  
      1、写入全部字节数组pubic void writer (byte[] b)throws IOException
      2、写入部分字节数组public void writer(byte[] b ,int off,int len)throws IOException
      3、写入一个数据public abstract void writer (int b)throws IOException 
   字节输入流InputStream
      使用InputStream可以读取输入流的内容此类也是一个抽象类同样需要使用子类对象进行实例化如果现在是文件操作则使用 FileInputStream。
       FileInputStream的构造方法:
   public FileInputStream(File file) throws FileNotFoundException 
      1、将内容读入字节数组中pubic int read(byte[] b)throws IOException 
      2、每次读入一个数据public abstract void read (int b)throws IOException  
   字符输入流Reader
       Reader与OutputStream的不同的是使用的是char数组 Reader是一个抽象类进行文件读取要使用FileReader 读取的方法  
      读取一组字符:public int read(char[]   cbuf)throws IOException


   字符流于字节流的区别:
       字节流——>文件
       字符流——>缓冲区——>文件
      字符流在操作的时候是通过缓冲区与文件关联。
       综合比较:在传输或者在硬盘上保存的内容都是以字节的形式存在的,所以字节流的操作比较多,但是在操作中文的时候字符流比较好使。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值