黑马程序员技术交流社区

标题: 【石家庄校区】就业班_JavaSE_day10_IO流 [打印本页]

作者: 风中的消逝    时间: 2018-4-23 14:49
标题: 【石家庄校区】就业班_JavaSE_day10_IO流
本帖最后由 小石姐姐 于 2018-4-24 17:09 编辑

                                       就业班_JavaSE_day10_IO流
一 IO流
     1 分类
        按方向分 : 输入流  输出流    这里的输入和输出是相对于程序来说。
        按类型分     字节流   字符流
        按功能分     节点流    包装流
        
      2 体系结构  顶层都是抽象类
         InputStream、OutputStream、Reader、Writer
         文件流
         FileReader 、FileWriter 、 FileOutputStream、FileInputStream
         缓冲流
         BufferedReader 、 BufferedWriter 、BufferedInputStream 、BufferedOutputStream
         标准输入输出  
         System.out  System.in
         转换流
         InputStreamReader  OutputStreamWriter
         对象流
         ObjectOutputStream  ObjectInputStream
         1 对象需要实现序列化接口 读到末尾报EOFException。所以用集合封装多个对象来作为一个对象,
         一次读取一个集合对象,避免EOFException。
        2  序列号:实现序列化接口,默认会给该类自动提供一个序列号,每次读写都需要先判断
         二边的序列号是否一致,如果不一致,就会报异常。但通常我们会经常修改类,这样就会导致
         序列号改变,造成不一致。所以我们人为添加一个序列号id,将序列号ID固定。避免序列号改变报异常。
         3 写对象, 读写对象,需要统一都用对象流。
         打印流
        PrintWriter
        可以实现自动换行;自动刷新。
        println() 可以自动换行。
        如果要实现自动刷新,调构造方法来实现。
        println、printf 或 format 只有调这三个方法才会触发自动刷新
        PrintWriter(OutputStream out, boolean autoFlush)
        PrintWriter(Writer out, boolean autoFlush)
               
       3 编码流程
               1.得到输入和输出流
               2.进行读写操作
               (读写单位:一次读写一个字节;一次读写一个字符;
               一次读写一个字节数组;一次读写一个字符数组;
               一次读写一个字符串;一次读写一个对象;
               )
               3.释放资源
            注意:所有IO流的构造方法传入对象都是以类名结尾的流。
            除了转换流(传入对象的字节流)和打印流(可以直接传入File 、字节流、字符流)
               
二 Properties类  继承Hashtable   是一个map
       构造方法 Properties prop = new Properties();
       特有添加元素方法 prop.setProperty(String key, String value)
       特有取元素方法  prop.getProperty(String key)
      
       与IO结合的方法
       从.properties文件读数据
                   prop.load()  传字节输入流和字符输入流都可以
       从Properties对象写入数据到.properties文件
                   prop.store() 传字节输出流和字符输出流都可以
      
       注意 .properties文件不能存储中文,应为.properties文件默认是ISO8859-1编码
      
三 字符集编码
      java中字符默认采用ANSI 该变量表示本地语言环境。如操作系统是简体中文,则ANSI是GBK
      UTF-8   GBK
     避免乱码,读写用同一种字符集。
     
      String(byte[] bytes, String charsetName)
      通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String
      String(byte[] bytes, int offset, int length, Charset charset)
      通过使用指定的 charset 解码指定的 byte 子数组,构造一个新的 String。
      public byte[] getBytes(Charset charset)
      使用给定的 charset 将此 String 编码到 byte 序列,并将结果存储到新的 byte 数组
      public byte[] getBytes()
      使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中
      
      转换流中构造方法带字符集编码来实现解码和编码。
      public InputStreamReader(InputStream in, String charsetName)
      public OutputStreamWriter(OutputStream out, String charsetName)







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2