• IO流巧记图


    本文特意将各种IO流的类总结到一起,作成图,方便记忆

    1.流的写入和读取

     

    2.字符输入流

    3.字符输出流

    4.字节输入流

    5.字节输出流

    6.概念杂记

    * Buffered;带缓冲区的字符读取流,高效读取。在父类的基础上增加了读取一行数据的功能
    * Buffered实例化的对象是Stream
    * Writer有flush()方法,必须使用才能写入,OutputStream也有flush(),不过不使用也能写入
    * BufferedWriter有newLine()方法-换行
    * BufferedReader/LineNumberReader有readLine()方法
    * String转为byte[]要用getBytes();String转为char[]用toCharArray();
    * new String(b,0,length)
    * InputStream,Reader都有read()方法
    * OutputStream,Writer都有write()方法
    * InputStream需要建立byte[] b = new byte[1024];
    * Reader都要建立char[] ch = new char[1024];如果readLine就不用建立了
    * 最后的时候input/output关闭谁先谁后没有顺序要求
    * 只有File流才能添加文件路径(RandomAccessFile/PrintStream/PrintWriter也可以)
    * 字节流读到末尾返回-1,字符流读到末尾返回null
    * 如果需要整体读取或写入,建议采用内存流     
    * DataInputStream只能用DataOutputStream来写
    * ObjectOutputStream写入的对象必须实现serializable接口
    * file.length()只能获得文件的大小,不能获得文件夹的大小 
    * File.listRoots()返回当前系统所有盘符
    * 实现serializable接口最好定义默认的UID
    * 将毫秒数转换为日期。

    public static String LongToDate(Long ms) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss ");
        return format.format(new Date(ms));
    }

    * System.out = PrintStream
    * System.in = InputStream
    * ByteArrayOutputStream其中的数据被写入一个 byte 数组(即写到内存中)。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。 
    * DataInputStream可以读取各种基本数据类型;DataOutputStream可以写入各种基本数据类型,而且DataOutputStream保存到文件的内容只有系统明白,人看不明白;DataInputStream只能用DataOutputStream来写
    * RandomAccessFile既能read又能write
    * 对文件路径切割使用split("\\")
    * ObjectOutputStream和dataOutputStream区别:ObjectOutputStream可以将一个实现了序列化的类实例写入到输出流中
    * BufferedOutputStream和ByteArrayOutputStream区别:
        * BufferedOutputStream 的优势主要是针对不用缓冲区的一般输出流而言的,即减少读取到内存的次数,同时缓冲区大小固定,区满则清空,有效利用内存;
        * ByteArrayOutputStream的write方法并没有输出到输出流,而是为了得到一个保存了所有待输出字节的byte数组:缓冲区不断扩容,直到所有内容都读取到缓冲区中;至于之后对缓冲区的数据如何处理,是输出到输出流还是其他,并不关心。即我们在flush这个缓冲数组之前还可以对完整的数据进行处理而BufferedOutputStream.缓冲区保存的可能是部分数据。这样相较于BufferedOutputStream,可数据量大时可有效减少执行flush的次数,提供处理速度——但是牺牲了内存。

  • 相关阅读:
    安卓执行机制JNI、Dalvik、ART之间的比較 。android L 改动执行机制。
    Android studio 导入githubproject
    JS创建对象几种不同方法具体解释
    python 学习笔记 13 -- 经常使用的时间模块之time
    Version和Build的差别
    关于Java基础的一些笔试题总结
    vim编码方式配置的学习和思考
    从头认识java-15.5 使用LinkedHashSet须要注意的地方
    一篇文章,带你明确什么是过拟合,欠拟合以及交叉验证
    Spring -- Bean自己主动装配&Bean之间关系&Bean的作用域
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/5222095.html
Copyright © 2020-2023  润新知