内存流(字节数组流)ByteArrayInputStream

package org.example.io;

import java.io.ByteArrayInputStream;
import java.io.IOException;

/**

* ByteArrayInputStream:在创建对象时传入数组即可,不需要传文件,也没有新增的方法,close()关闭无效

* 流本身就是内存中的资源,流中的内容也是内存中的资源,所以不用手动关闭,内存会给他释放,所以不用关闭流

* 流的内容是内存中的资源,不访问磁盘

*/

public class TestByteArrayInputStream {

  public static void main(String[] args) {

    String s = "Hello World!";

    byte[] b = s.getBytes();  // 获取字符串的字节数组

    read(b);

  }

  private static void read(byte[] b) {

    ByteArrayInputStream bais = new ByteArrayInputStream(b);  // ByteArrayInputStream实例化时不抛出异常的原因是没有和外界产生关系

    int i = 0;

    byte[] b1 = new byte[1024];  // 字节数组缓冲区

    StringBuilder sb = new StringBuilder();  // StringBuilder位于java.lang包中,类似于字符串

    try {

      while ((i = bais.read(b1)) != -1) {

        sb.append(new String(b1, 0, i));  // 将指定的字符串循环附加到sb上

      }

      System.out.println(sb);  // 输出sb字符串

    } catch (IOException e) {

      e.printStackTrace();

    }

  }

}

原文地址:https://www.cnblogs.com/ss-123/p/8976169.html

时间: 2024-10-28 14:51:14

内存流(字节数组流)ByteArrayInputStream的相关文章

六、字节数组流ByteArrayInputStream&ByteArrayOutputStream

一.前提 经常而言我们都是针对文件的操作,然后带上缓冲的节点流进行处理,但有时候为了提升效率,我们发现频繁的读写文件并不是太好,那么于是出现了字节数组流,即存放在内存中,因此有称之为内存流: 1.ByteArrayInputStream类 ByteArrayInputStream包含一个内部缓冲区,其中包含可以从流中读取的字节. 内部计数器跟踪由read方法提供的下一个字节. 关闭一个ByteArrayInputStream没有任何效果. 该流中的方法可以在流关闭后调用,而不生成IOExcept

Java IO学习笔记(三)转换流、数据流、字节数组流

转换流 1.转换流:将字节流转换成字符流,转换之后就可以一个字符一个字符的往程序写内容了,并且可以调用字符节点流的write(String s)方法,还可以在外面套用BufferedReader()和BufferedWriter,并使用它们的readLine 和 newLine方法. 2.有两种转换流:InputStreamReader.OutputStreamWriter 练习小程序1: package test.io.transfer; import java.io.FileOutputSt

java基础(IO流---字节流、字符流、字节数组流)

字节流: FileInputStream:通过字节的方式读取文件,适合读取所有类型的文件(图像.视频等),全字符请考虑FileReader FileOutputStream:通过字节的方式写出或追加数据到文件,适合所有类型的文件(图像.视频等),全字符请考虑FileWriter 字符流: FileReader :通过字符的方式读取文件,仅适合字符文件 FileWriter :通过字节的方式写出或追加数据到文件中,仅适合字符文件 字节数组流: ByteArrayInputStream:字节数组输入

Java文件与io——字节数组流数据流字符串流

字节数组流 ByteArrayInputStream:包含一个内部缓冲区,该缓冲区包含从流中读取的字节.内部计数器跟踪read方法要提供的下一个字节.关闭ByteArrayInputStream无效.此类中的方法在关闭此流后仍可被调用,而不会产生任何IOException. ByteArrayOutputStream:此类中实现了一个输出流.其中的数据被写入一个byte数组.缓冲区会随着数据的不断写入而自动增长.可使用toByteArray()和toString()获取数据.关闭ByteArra

利用字节流和字节数组流是实现文件的复制

package ioxuexi; import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;i

Java IO 过滤流 字节缓冲流 BufferedInput/OutputStream

Java IO 过滤流 字节缓冲流 BufferedInput/OutputStream @author ixenos 概念 BufferedInput/OutputStream是实现缓存的过滤流,他们分别是FilterInput/OutputStream的子类. BufferedInputStream工作流程 stream-->buf--read buf-->I 1.当一个BufferedInputStream被创建时,一个内部的缓冲区 byte[] buf = new byte[size]

java _io_图片到内存(字节数组),字节数组到文件,练习文件流和字节数组流

//图片读取到字节数组中,字节数组写出到文件 public class test{ public static void main(String[]args) { String path="C:/Users/10853/eclipse-workspace/hell/linux学习路线.png"; byte[] data=toByteArray(path); //图片不能直接到字节数组中,is.read()返回的是int类型的大小,new String是解码 //需要写入字节数组(内存)

[源码]ObjectIOStream 对象流 ByteArrayIOStream 数组流 内存流 ZipOutputStream 压缩流

1.对象流 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputS

JavaSE 高级 第09节 字节数组输入流ByteArrayInputStream

2016-07-24 1,ByteArrayInputStream FileInputStream的输入源是文件. ByteArrayInputStream的输入源是字节数组. reset() 重置到mark标记的位置,如果没有调用过mark方法, 则重置到缓冲区(ByteArray)的起始位置 mark(int) package com.java1995; import java.io.ByteArrayInputStream; public class TestByteArrayInputS