zoukankan      html  css  js  c++  java
  • Android_输入输出流

    http://blog.csdn.net/lanhuzi9999/article/details/31389963

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

    I/O流的类型

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

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

    输入输出流的层次结构图

    2、常用输入输出流

    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( ) : 关闭输出流并释放与流相关的系统资源。

    3.FileInputStream: inputStream类的子类,处理以文件作为输入源的数据源。常用方法:

    方式1:

     

    File fin=new File("d:/abc.txt");

     

       FileInputStream in=new FileInputStream(fin);

     

    方式2:

     

       FileInputStream in=new

     

                FileInputStream("d: /abc.txt");

     

    方式3:

     

    构造函数将 FileDescriptor()对象作为其参数。

     

    FileDescriptor() fd=new FileDescriptor();

     

    FileInputStream f2=new FileInputStream(fd);

    4.FileOutputStream:用来处理文件作为输出地的stream。常用的方法:

    方式1:

     

    File f=new File("d:/abc.txt");

     

    FileOutputStream out=new FileOutputStream (f);

     

    方式2:

     

       FileOutputStream out=new

     

           FileOutputStream("d:/abc.txt");

     

    方式3:构造函数将 FileDescriptor()对象作为其参数。

     

    FileDescriptor() fd=new FileDescriptor();

     

    FileOutputStream f2=new FileOutputStream(fd);

     

    方式4:构造函数将文件名作为其第一参数,将布尔值作为第二参数。

     

    FileOutputStream f=new FileOutputStream("d:/abc.txt",true);

     

    注意:

     

    (1)文件中写数据时,若文件已经存在,则覆盖存在的文件;(2)的读/写操作结束时,应调用close方法关闭流。

    5.BufferedInputStream,BufferedOutputStream允许程序在不降低系统性能的情况下一次一个字节的从流中读取或者写入数据

    BufferInputstream定义了两种构造函数

    1)      BufferInputStreamb= new BufferInputstream(in);

    2)      BufferInputStreamb=new BufferInputStream(in,size)

    第二个参数表示指定缓冲器的大小。

    同样BufferOutputStream也有两种构造函数。一次一个字节的向流中写数据。

    Unicode字符流的读取和写入:

    java.io.Readerjava.io.InputStream组成了 Java输入类。Reader用于读入16位字符,也就是Unicode编码的字符;而InputStream用于读入ASCII字符和二进制数据。

    ReaderWriter的体系结构

  • 相关阅读:
    Android 蓝牙4.0 BLE (onServicesDiscovered 返回 status 是 129,133时)
    Android 读取蓝牙设备信息开发
    Android RxJava
    Android 通信 EventBus
    数据仓库基础介绍
    探索SQL Server元数据(三):索引元数据
    探索SQL Server元数据(二)
    MySQL常见备份方案
    hivesql优化的深入解析
    mysql执行计划看是否最优
  • 原文地址:https://www.cnblogs.com/wingjay/p/3819216.html
Copyright © 2011-2022 走看看