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();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容