• Java入门第六篇:I/O流


    [java中的IO流]
    分类:
    1. 根据流的方向:输入流和输出流
    根据读取文字的大小:字节流和字符流;
    字节流按字节读取,读取中文时会产生乱码,字符流按字符读取,通常用于读取中文。
    根据读取的方式:节点流和缓存流
     
     
    [BufferedInputStream和....Output..]
     
    新建一个对象,传入一个文件,这个对象作为缓存流。可以减少文件的读写次数,提高读写速度。
    程序最后,刷新缓存流:bos.fluse();
    缓存区一定要关!
    bis.close();
    bos.close();(会自动刷新缓存流)
     
    缓存流的作用:
    将文件对象作为参数传入缓存对象。
    这种写法,我们称之为IO链,IO关闭时只需要关闭最外层流,内层流将自动关闭。
     
    [DataInputStream类]
     
    用二进制对文件进行读写操作,(可读写二进制文件、基本fis读写可能出现乱码)。
    与基本流相比,可以直接读写java中的基本数据类型。
    (使用DataOutputStream写入的文件,只能使用DataInputStream读 )
    方法.readUTF();可读取中文。
     
    [ObjectInputStream]
    1.与基本流相同,可以直接使用read和writer读写;
    2.与DataInputStream相同,可以对java基本数据类型进行直接读写。
    方法.redaInt(); readDouble();等
    3.使用可以使用readObject()和writeObject()对对象进行读写。
      读写对象时,一定要对要读写的对象类实现序列化。
     
    [对象的序列化和反序列化]
    概念:
    对象的序列化:将程序中的对象,持久化的保存在文件中的过程。
    对象的反序列化:将文件中保存的对象,重新读取到程序中的过程。
    序列化必须对象所属 的类必须实现serializable接口
    当一个实体类,实现可序化接口后,可以it安家一个序列化版本号ID
    private static final long serialVersionUID = 1L;
    添加以后,可以用ID表示序列化和反序列化操作的对象,是同一个对象。
    否则序列化之后,如果实体类属性有删减,在进行序列化时 系统默认不是同一类,会造成错误。
     
    [字符流]
    1.在处理数据单元时,以一个字符作为单位;
    而字节流,以一个字节作为单位。
    2.字符的基类:
    Reader和Writer 是抽象类
    FileReader和FileWriter是直接继承字抽象类的两个基本字符流。
    3.FileReader和FileWriter只能使用系统使用的编码格式;
    无法指定编码,如果文件格式与系统默认格式不一样,那使用这两个方法读写将造成中文乱码。
     
    [InputStreamReader和OutputStreamWriter]
    1.将字节流转换为字符流,同时支持自定义读写的编码格式;
    文件传入时自带缓存功能。
    2.常见的编码格式。
      ASCII : 美国标准消息码;
      ISO8859-1 : 欧洲码;
      GB2312 : 国标码;
      GBK : 国标扩展码;
    ANSI编码,可以分为很多种;
      简体中文:
        GB2312;
        GBk;
      繁体中文:
        BIG-5;
    Unicode编码:国际标准码,兼容绝大部分国家的编码格式。
    可以分为UTF-6,UTF-8,UTF-16。
  • 相关阅读:
    怎样使用 Apache ab 以及 OneAPM 进行压力測试?
    opencv之haar特征+AdaBoos分类器算法流程(三)
    分区函数Partition By的与row_number()的用法以及与排序rank()的用法详解(获取分组(分区)中前几条记录)
    REST API 调用 方法
    WebApi的安全性及其解决方案
    使用Topshelf创建Windows服务
    LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Count
    sqlbulkcopy 多表批量保存
    C#使用HttpWebRequest和HttpWebResponse上传文件示例
    C#模拟客户端发送数据示例
  • 原文地址:https://www.cnblogs.com/lslboy/p/8907246.html
Copyright © 2020-2023  润新知