• Java IO的一般使用原则


     

    一、按数据来源(去向)分类:

    1、是文件: FileInputStream, FileOutputStream, FileReader, FileWriter

    2、是byte[]:ByteArrayInputStream, ByteArrayOutputStream

    3、是Char[]: CharArrayReader, CharArrayWriter

    4、是String: StringBufferInputStream, StringReader, StringWriter

    5、网络数据流:InputStream, OutputStream, Reader, Writer

    二、按是否格式化输出分:

    1、要格式化输出:PrintStream, PrintWriter

    三、按是否要缓冲分:

    1、要缓冲:BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter

    四、按数据格式分:

    1、二进制格式(只要不能确定是纯文本的): InputStream, OutputStream及其所有带Stream结束的子类

    2、纯文本格式(含纯英文与汉字或其他编码方式);Reader, Writer及其所有带Reader, Writer的子类

    五、按输入输出分:

    1、输入:Reader, InputStream类型的子类

    2、输出:Writer, OutputStream类型的子类

    六、特殊需要:

    1、从Stream到Reader,Writer的转换类:InputStreamReader, OutputStreamWriter

    2、对象输入输出:ObjectInputStream, ObjectOutputStream

    3、进程间通信:PipeInputStream, PipeOutputStream, PipeReader, PipeWriter

    4、合并输入:SequenceInputStream

    5、更特殊的需要:PushbackInputStream, PushbackReader, LineNumberInputStream, LineNumberReader

    6、对象序列号 java.io.Serializable接口支持将一个Java技术对象存放到一个流中。

    决定使用哪个类以及它的构造进程的一般准则如下(不考虑特殊需要):

    第一,考虑最原始的数据格式是什么:是否为文本?

    第二,是输入还是输出?

    第三,是否需要转换流:InputStreamReader, OutputStreamWriter?

    第四,数据来源(去向)是什么:文件?内存?网络?

    第五,是否要缓冲:bufferedReader (特别注明:一定要注意的是readLine()是否有定义,有什么比read, write更特殊的输入或输出方法)

    第六,是否要格式化输出:print?


    本文来自CSDN博客http://blog.csdn.net/ycyangcai/archive/2010/04/15/5489048.aspx

  • 相关阅读:
    [GO] go使用etcd和watch方法进行实时的配置变更
    [GO]go context的deadline方法
    [GO]go使用contextCancel
    [GO]go使用etcd
    js控制复选框checkbox 只能单选
    JQuery.Ajax之错误调试帮助信息
    SQLServer2005创建定时作业任务
    JS/JQuery针对不同类型元素的操作(radio、select、checkbox)
    SQL Server跨库查询
    javax.net.ssl.SSLHandshakeException(Cas导入证书)
  • 原文地址:https://www.cnblogs.com/alaricblog/p/3278264.html
Copyright © 2020-2023  润新知