Android-IO流之数组内存字节流ByteArrayInputStream/ByteArrayOutputStream

目录

  1. ByteArrayInputStream/ByteArrayOutputStream
    --10.1 ByteArrayInputStream(可以将字节数组转化为输入流)
    --10.2 ByteArrayOutputStream(向内存中写数据,写完后可以一次性获取所有的数据)

10.ByteArrayInputStream/ByteArrayOutputStream

ByteArrayOutputStream类是在创建它的实例时,程序内部创建一个byte型别数组的缓冲区,然后利用ByteArrayOutputStream和ByteArrayInputStream的实例向数组中写入或读出byte型数据。

10.1 ByteArrayInputStream

可以将字节数组转化为输入流
1.ByteArrayInputStream构造方法

public ByteArrayInputStream(byte buf[])
public ByteArrayInputStream(byte buf[], int offset, int length)

2.ByteArrayInputStream重要方法

public synchronized int read()
public synchronized int read(byte b[], int off, int len)

3.使用ByteArrayInputStream

ByteArrayInputStream bis = new ByteArrayInputStream("haha".getBytes());

10.2 ByteArrayOutputStream

向内存中写数据,会写入到一个byte数组中,把内存当一个缓冲区,缓冲区随数据的不断写入而自动增长。
写完后可以一次性获取所有的数据,用toByteArray()/toString()获取数据
1. ByteArrayOutputStream构造方法

public ByteArrayOutputStream()
public ByteArrayOutputStream(int size)

2. ByteArrayOutputStream重要方法

public synchronized void write(int b)
public synchronized void write(byte b[], int off, int len)

public synchronized byte toByteArray()[]
public synchronized String toString()
public synchronized String toString(String charsetName) //charsetName字码表

注意:ByteArrayOutputStream的close方法无效。类中方法在close之后还可以使用。
因为缓冲区用完就释放,并没有到硬盘中读数据。(其他流到硬盘中读数据,所以需要关闭流。)

3.使用ByteArrayOutputStream

        File dir = Environment.getExternalStorageDirectory();
        File file = new File(dir, "abc.txt");
        File dst = new File(dir, "dst4.txt");

        FileInputStream fis = new FileInputStream(file);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        int len = -1;
        byte[] buffer = new byte[1024];
        while ((len = fis.read(buffer)) != -1) {
            baos.write(buffer, 0, len);
        }

        byte[] bytes = baos.toByteArray();
        Log.d("xl", new String(bytes));

        String str = baos.toString();
        Log.d("xl", str);

        fis.close();

你可能感兴趣的:(Android-IO流之数组内存字节流ByteArrayInputStream/ByteArrayOutputStream)