`

黑马程序员--java基础复习--IO

 
阅读更多

---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ---------------------

   流的概念:

当程序需要读取数据的时候,就会开启一个通向数据源的读取流,数据源可以是文件、内存、控制台、网络等,当程序要写入数据是,就会开启一个通向目的地的输出流,流对象就是干这么些事的。

   流的分类:

     按数据方向分为:输入流:InputStream、Reader

                                 输出流:OutputStream、Writer

     按数据类型分:字节流:InputStream、OutputStream

                              字符流:Reader、Writer

 常用的字节流:



 常用字符流


字节流和字符流的区别:

  1. 字节流读取数据的时候,读到一个字节就返回一个字节。字符流则是使用字节流来读到一个或者多个字节(根据选定的或者默认的编码集来确定读多少个)时,先去查编码表,然后将查到的字符返回。
  2. 字节流可以处理所有数据类型,字符流只能处理字符数据,如文本。
  3. 可以根据流的类名后缀来清楚的知道一个流属于哪一类,一些特殊的比如RandomAccessFile、Console除外。字节读取流都以InputStream结尾,字节输出流都以OutputStream结尾,同理字符流的读取流都以Reader结尾,输出流都以Writer结尾。

在操作数据时,用的最多的是字节流,因为所有的数据都是用字节的形式存储的,只有数据是纯文本形式的,才考虑用字符流。

 

常用流的常用方法

 

   字节输入流:InputStream----所有字节输入流的父类,三个基本的read()方法:

  • int read()  从流里边读取一个字节,读到数据末尾则返回一,这个一般已经封装于子类读取流的读取方法中,开发人员很少用到。
  • int read(byte[] buf)  从流里边读取数据到buf字节数组中,并返回读取的字节个数,如果读取到末尾,则返回-1,
  • int read(byte[] buf, int off, int len)从流里边读取数据到字节数组中,并返回读取的字节个数,字节数组的有效存储位置为角标为off到len-1的位置。这个方法貌似可以用来加密数据。

  其他方法

  • void close()关闭输入流,释放所有与该流关联的系统资源
  • int available() 返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。
  • long skip(long n) 跳过和丢弃此输入流中数据的 n 个字节。返回跳过的实际字节数。
  • boolean makSupported() 测试此输入流是否支持 markreset 方法。
  • void mark(int n) 标记当前位置,n表示之后n个字节数可以被重新读取,如果读取超过了n个字节还没有调用reset方法,标记失效
  • void reset 将输入流重新定义到最后调用mark方法的位置,但是如果没有标记或者标记失效,则抛出异常。

  字节输出流:OutputStream---所有字节输出流的父类,三个基本的write方法

  • void write(int n) 将制定的字节写入输出流  
  • void write(byte[] buf) 将字节数组中的所有字节写入指定输出流
  • void write(byte[] buf,int off, int len) 将指定字节数组的从角标off到角标len-1的字节写入输出流

其他方法:

  • void close()
  • void flush() 输出流特有,因为数据写在缓冲区里,所以在程序中要记得刷新一下,虽然很多输出流子类提供了自动刷新的功能,但是如果忽略了fulsh()方法有时候还是会造成一点小麻烦的。
     

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net

  • 大小: 128 KB
  • 大小: 5.6 KB
0
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics