Java的简单理解(23)---字节数组流

Java

其他流

1. 字节数组流
  • ByteArrayInputStream
  • ByteArrayOutputStream
1. 读取
/**
 * 字节数组流
 * 数组的长度有限,数据量不会很大
 */
public void read() throws IOException {

    // 数据源
    String msg = "操作与文件输入流操作一致";
    byte[] src = msg.getBytes();

    // 选择流
    ByteArrayInputStream is = new BufferedInputStream(new ByteArrayInputStream(src));

    byte[] car = new byte[1024];
    int len = 0;

    while ((len = is.read(car)) != -1) {
        System.out.println(new String(car,0,len));
    }

    is.close();
}
2. 写出

/**
 * 操作与文件输出流有些不同,有新增方法,不能使用多态
 */
public byte[] write() throws IOException {

    // 目的地
    byte[] dest;

    // 选择流(后面没有对应的文件)
    ByteArrayOutputStream bos = new ByteArrayOutputStream();

    // 操作输出
    String msg = "操作与文件输出流不一致";
    byte[] info = msg.getBytes();
    bos.write(info,0,info.length);

    // 获取数据
    dest = bos.toByteArray();

    // 释放资源
    bos.close();

    return dest;
}
字节数组流与文件流对接
3. 文件---程序---字节数组
/**
 * 1. 文件---程序---字节数组
 * @param srcPath
 * @return
 */
public static byte[] getBytesFromFile(String srcPath) throws IOException {

    // 创建文件源
    File src = new File(srcPath);

    // 创建字节数组目的地
    byte[] dest = null;

    // 选择流(文件输入流)
    InputStream is = new BufferedInputStream(new FileInputStream(src));

    // 字节数组输出流,不能使用多态
    ByteArrayOutputStream bos = new ByteArrayOutputStream();

    // 操作,不断的读取流
    byte[] car = new byte[1024];
    int len = 0;
    while ((len = is.read(car)) != -1) {
        // 写出到字节数组流中
        bos.write(car,0,len);
    }

    bos.flush();

    // 获取数据
    dest = bos.toByteArray();

    return dest;

}

4.字节数组 --- 程序 --- 文件
/**
 * c
 * @param src
 * @param destPath
 */
public static void toFileFromByteArray(byte[] src,String destPath) throws IOException {

    // 创建源文件
    // 目的地
    File file = new File(destPath);

    // 字节数组输入流
    InputStream is = new BufferedInputStream(new ByteArrayInputStream(src));
    // 文件输出流
    OutputStream os = new BufferedOutputStream(new FileOutputStream(file));

    // 操作 不断读取字节数组
    byte[] car = new byte[1024];
    int len = 0;

    while ((len = is.read(car)) != -1) {
        // 写出到文件流中
        os.write(car,0,len);
    }

    os.flush();

    // 释放资源
    os.close();
    is.close();


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

相关阅读更多精彩内容

友情链接更多精彩内容