InputStream类和OutputStream类

来源:互联网 发布:淘宝刻了章会被发现吗 编辑:程序博客网 时间:2024/06/11 22:38
流的概念:
  • 流是字节序列的抽象概念。
  • 文件是数据的静态存储形式,而流是指数据传输时的形态。
  • 流类分为两个大类:节点流类和过滤流类(也叫处理流类)。

InputStream类

程序可以从中连续读取字节的对象叫输入流,在JAVA中,用InputStream类来描述所有输入流的抽象概念。FileInputStream类是InputStream类的.
 
InputStream类的方法:
  1. int read() 从输入流中读取一个字节的内容,并且把这个内容以整数的形式返回。如果碰到流的结束处,那么返回的值就是“-1”;如果流没有结果,但临时没有数据可读,那read方法就将阻塞运行程序的执行过程,至到流中有新的数据可读。(流可以看做是一个通道)read方法将读取的每一个字节复制到int类型(int类型占用4个字节)中的最低字节,其他高字节的部份全部设置为零.
  2. int read(byte[] b) 用于从输入流读取若干个字节的内容到字节数组b中,最多读取的字节个数就是这个字节数组的长度,由于这个流中不一定有这么多的字节可读,
  3. int read(byte[] b,int off,int len) 这每次读取len个字节,并放入到字节数组b中,并且是以角标为off的位置依次放入。那么实际上读取的个数以返回值为准。
  4. long skip(long n) 跳过输入流中的n个字节,并返回实际跳过的字节数。这个方法主要用于包装流中,包装类中流可以跳跃,一般的低层流不能跳跃.
  5. int available() 返回当前输入流中可读的字节数,在使用时我们可以先用available方法来判断流中是否有可读数据,再用read方法进行读取,这样可以防止程序发生阻塞.(但一般我只使用read方法直接来读取)
  6. void mark(int readlimit) 在输入流中建立一个标记,readlimit表示在建立标记地方开始最多还能读取多少个字节的内容。(用于包装类的方法)
  7. void reset() 与mark方法配合使用,用mark方法在a 处做标记后再读取b个字节并调用reset方法,当下次再读时就从a的地方开始读取。(reset方法是让指针回到以前做的标记处)
  8. boolean markSupported() 返回当前流对象是否支持mark和reset操作
  9. void close()  用于完成一个流的所有操作以后,关闭这个流,放弃与这个流相关的所有资源。
 
InputStream是抽象类,程序中实际使用的是InputStream的各种子类对象,不是所有的子类都会支持InputStream中定义的某些方法。比如skip,mark,reset在节点流中不适用,它们是用于包装输入流。
 
OutputStream类
 
程序可以向其中连续写入字节的对象叫输出流,在JAVA中,用OutputStream类来描述所有输出流的抽象概念。FileOutputStream类是OutputStream类的子类。
 
OutputStream类的方法:
 
  1. void write(int b) 将一个整数中的最低一个字节中的内容写到输出流中,高字节部份被弃。
  2. void write(byte[] b) 将字节数组中的所有内容写入到输出流对象中。
  3. void write(byte[] b,int off,int len) 将字节数组b中从off位置开始的len个字节写入到输出流对象中.
  4. void flush() 将内存缓冲区的内容完全清空,新输出到IO设备当中。
  5. void close() 关闭输出流对象。

InputStream类和OutputStream类


原创粉丝点击