andorid输入输出流

一个流可以理解为一个数据的序列。输入流(InputStream)表示从一个源读取数据,可以通过read函数从输入流中读取数据。输出流(Outputstream)表示向一个目标写数据,可以通过write函数向输出流中写入数据。

stream:任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。我们经常使用的stream基本上都是从这两个类继承而来:Inputstream和Outputstream

I/O流的类型:字节流和字符流

字节流:以字节为单位向stream中写入或者从stream中读取。一般的二进制数据都使用字节流,比如声音和图像等

字符流:以Unicode字符为单位向stream中写入或者从stream中读取。要处理16位的Unicode字符流就需要引进writer和reader,加入了writer和reader的新的i/o类库既可以处理8位的字节流,也可以处理16位的Unicode字符流。这个主要是为了解决国际化的问题。

输入输出流的层次结构图:
在这里插入图片描述

在这里插入图片描述

几种比较常见的输入输出流

1.inputStream:产生数据的数据源,inputStream类是抽象类,不能创建对象,需要通过子类来实现。比较常用的方法如下:

  1. public abstract int read( ):读取一个byte的数据,返回值是高位补0的int类型值。
  2. public int read(byte b[ ]):读取b.length个字节的数据放到b数组中。返回值是读取的字节数。该方法实际上是调用下一个方法实现的
  3. public int read(byte b[ ], int off, int len):从输入流中最多读取len个字节的数据,存放到偏移量为off的b数组中。
  4. public int available( ):返回输入流中可以读取的字节数。注意:若输入阻塞,当前线程将被挂起,如果InputStream对象调用这个方法的话,它只会返回0,这个方法必须由继承InputStream类的子类对象调用才有用.
  5. public long skip(long n):忽略输入流中的n个字节,返回值是实际忽略的字节数, 跳过一些字节来读取
  6. public int close( ) :我们在使用完后,必须对我们打开的流进行关闭.

2.outputStream:可以接收数据的接收源,和inputStream一样,也是抽象类。比较常用的方法:

  1. public void write(byte b[ ]):将参数b中的字节写到输出流。
  2. public void write(byte b[ ], int off, int len) :将参数b的从偏移量off开始的len个字节写到输出流。
  3. public abstract void write(int b) :先将int转换为byte类型,把低字节写入到输出流中。
  4. public void flush( ) : 将数据缓冲区中数据全部输出,并清空缓冲区。
  5. public void close( ) : 关闭输出流并释放与流相关的系统资源。

猜你喜欢

转载自blog.csdn.net/zjpp2580369/article/details/84068889
今日推荐