• 黑马程序员——IO包中的其他类


    IO包中的其他类:

       1.打印流:提供了打印方法,可以将各种数据类型的数据原样打印
         字节打印流PrintStream
           构造函数可以接受的参数类型:
             (1)File对象  File
              (2)字符串路径 String
              (3)字节输出流  OutputStream

         字符打印流PrintWriter
            构造函数可以接受的参数类型:
               (1)File对象  File
              (2)字符串路径 String
              (3)字节输出流  OutputStream
               (4)字符输出流:Writer
      2.SequenceInputStream(串联流)
        
         用于把多个流中的数据写入一个流中,构造函数传入Enumeration<? extends InpuStream>
         需要用到Vector       
      3.操作对象
         ObjectInputStream,ObjectOutputStream
           被操作的对象要实现Serializable(标记接口),
         Serializable运行时使用一个称为serialVersionUID的版本号与每个可序列化类相关联,
         次版本号根据类中的成员计算得出。。如果接受者加载该对象的类的serialVersionUID与对应的发送者的版本号不同,则
         反序列化会导致InvalidClassException。可序列化类可以通过声明名为serialVersion的字段(该字段必须是静态,最终的long型字段)
         显式声明自己的serialVersion,如此当改变类成员时,也可反序列化。

         静态成员不会被序列化,因为只能序列化对中的数据,静态成员在方法区。
         如果希望摸个成员不被序列化,可以用transient修饰,保证其值在对内存中存在,而不再文本文件中存在  
         分别使用readObject(Object) 和writeObject(Object)方法读取对象和持久化对象

      4.管道流 PipedInputStream,PipedOutputStream
          管道输入流应该连接到管道输出流;管道输入流提供要写入管道输出流的所有数据字节。
         通常,数据由某个线程从 PipedInputStream 对象读取,并由其他线程将其写入到相应的 PipedOutputStream。
         不建议对这两个对象尝试使用单个线程,因为这样可能死锁线程
         。管道输入流包含一个缓冲区,可在缓冲区限定的范围内将读操作和写操作分离开。
         如果向连接管道输出流提供数据字节的线程不再存在,则认为该管道已损坏
       5.RandomAccessFile :
          该类不算是流体系中的子类,是直接继承自Object
          但是他是IO包成员,因为它具备读写功能
          内部封装了一个数组,而且通过指针对数组的元素进行操作
         可以通过getFilePointer获取指针位置
         同事可以通过seek改变指针位置
         其实完成读写的原理是内部封装了字节输入流和输出流
         通过其构造函数可以看出,该类只能操作文件,而且操作问价还有模式:

       6.操作基本数据类型
         DataInputStream,DataOutputStream
       7.操作字节数组  :用流的读写思想来操作数组
         ByteArrayInputStream:在构造的时候,需要接收数据员,而且数据源是一个字节数组
         ByteArrayOutputStream:在构造的时候,不用定义数据目的地,因为该对象中内部已经封装了可变长度的字节数组
                     这就是数据目的地
         
       因为这两个流对象都操作数组,并没有使用系统资源,所以不用close关闭
         
       8.操作字符数组:CharArrayReader,CharArrayWriter
       9.将字符流转对象化为字节流对象,使用转换流:InputStreamReader(字节通向字符的桥梁)
                 InputStreamReader isr=new InputStreamReader(new FileInputStream("gbk.txt"),"gbk")
          OutputStreamWriter(字符通向字节的桥梁)
                 OutputStreamReader osr=new OutputStreamReader(new FileOutputStream("utf.txt"),"UTF-8")
      
      10.编码:字符串变成字节数组  String>String  new String(byte[],charsetName)
         Tomcat的编码方式是iso8859-1
           如果使用gbk编码方式存储了数据,取得时候解码用的是iso8859-1,
            此时可以将解码出的数据再用iso8859-1进行编码得到原来的字节数据,然后再用gbk解码即可
         但是如果期初是用utf-8解码而导致乱码,则不可逆转,因为gbk和utf-8均识别中文

  • 相关阅读:
    qt调用simsimi api实现小黄鸡
    [机器学习系列] k-近邻算法(K–nearest neighbors)
    Ubuntu上安装flashplayer
    关于ubuntu下qt编译显示Cannot connect creator comm socket /tmp/qt_temp.xxx/stub-socket的解决办法
    Linux下添加源的几种方法
    Ubuntu字符界面输入密码始终提示错误 login incorrect 解决办法
    boost::algorithm(字符串算法库)
    boost::assign(标准容器填充库)
    boost::format(字符串格式化库)
    C/C++内存对齐 ZZ
  • 原文地址:https://www.cnblogs.com/wdsthink/p/4372882.html
Copyright © 2020-2023  润新知