• java 内存操作流


    操作内存流的时候(从读取出来,注意一定要把真正的数据toByteArray或者toCharArray将数据读出来)

    之前的文件操作流是以文件的输入输出为主的,当输出的位置变成了内存,那么就称为内存操作流。此时要使用内存流完成内存的输入和输出操作。

    如果程序运行过程中要产生一些临时文件,可采用虚拟文件方式实现;

    直接操作磁盘的文件很耗性能,使用内存流可以提升性能;jdk里提供了内存流可实现类似于内存虚拟文件的功能。

    ByteArrayInputStream:将内容写到内存中     CharArrayReader

    ByteArrayOutputStream:将内存中的数据写出      CharArrayWriter

    ByteArrayInputStream:构造方法:

    public ByteArrayInputStream(byte[] buf):全部内容

    public ByteArrayInputStream(byte[] buf,int offset,int length):指定范围的内容

    ByteArrayOutputStream:

    public ByteArrayOutputStream()

     

     

    我的总结:内存流操作:先把数据写到内存中去,然后再从内存中读取出来!提升了性能!

    例子

    //此处用的是内存字节流(写入加输出)

    package june6D;

    import java.io.ByteArrayInputStream;

    import java.io.ByteArrayOutputStream;

    import java.io.IOException;

    public class ByteArrayDemo7 {

        public static void main(String[] args) throws IOException {

            String s = "java is a good language";

            ByteArrayOutputStream bos = new ByteArrayOutputStream();//输出流

            bos.write(s.getBytes());

            // 已经把信息写到了内存中

            byte[] bys = bos.toByteArray();// 得到真正的数据

            ByteArrayInputStream bis = new ByteArrayInputStream(bys);//输入流,需要源。

            byte[] b = new byte[1024];

            int len;

            while ((len = bis.read(b)) != -1) {

                String data = new String(b, 0, len);

                System.out.println(data);

            }

        }

    }

    package june6D;

    import java.io.CharArrayReader;

    import java.io.CharArrayWriter;

     

    public class CharArrayDemo8 {

        public static void main(String[] args) throws Exception {

            // 用内存字符流先把数据保存到内存中,然后从内存中取出数据

            String s = "河南城建学院";

            CharArrayWriter cw = new CharArrayWriter();

            cw.write(s);// 数据写到了内存中

            char[] ch = cw.toCharArray();

            CharArrayReader cr = new CharArrayReader(ch);

            char[] b = new char[1024];

            int len;

            while ((len = cr.read(b)) != -1) {

                String data = new String(b, 0, len);

                System.out.println(data);

            }

        }

    }

  • 相关阅读:
    Java vs C++ 基础异同比较
    2. 数组
    1. 数据结构概述
    动态规划专题:LeetCode 完全平方数
    动态规划专题:LeetCode 乘积最大子数组
    动态规划专题:LeetCode连续数列
    动态规划专题:LeetCode 按摩师
    3. 无重复字符的最长子串
    字典树(前缀树/后缀树)
    10. 排序算法思想概述及总结(精华)
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11136230.html
Copyright © 2020-2023  润新知