2022-05-18

IO流

1)

字符流 : (只能操作纯文本)

        Reader  用于读取字符流的抽象类。

            文件字符输入流FileReader : 节点流   输入流   字符流

                无新增功能,可以发生多态

        Writer  用于写入字符流的抽象类。

            文件字符输出流FileWriter : 节点流  输出流   字符流

                无新增功能,可以发生多态

    注意:

        方法的调用: 执行方法中的代码

            方式: 方法名(参数列表)

  //1.构建流->与文件建立联系

        Reader rd =new FileReader("D://test.txt");

        Writer rt =new FileWriter("D://aaa.txt", true);

        //2.读写

        char[] car= new char[1024];

        intlen  = -1; //记录每次读入到数组中数据的个数

       while((len=rd.read(car))!=-1){

           rt.write(car,0,len);

        }

        //3.刷出

        rt.flush();

        //4.关闭

        rt.close();

        rd.close();

2)

    缓冲流 : 加快读写效率

        功能流(节点流)

        字节缓冲流

            字节输入缓冲流  BufferedInputStream

                无新增方法,可以发生多态

            字节输出缓冲流  BufferedOutputStream

                无新增方法,可以发生多态

        字符缓冲流

  //1.流

        InputStreamis = new BufferedInputStream(new FileInputStream("D://test.txt")) ;

       OutputStream os = new BufferedOutputStream(newFileOutputStream("D://test2.txt"));

        //2.读写

        byte[] car= new byte[1024];

        int len =-1;

        while((len= is.read(car))!=-1){

           os.write(car,0,len);

        }

        //3.刷出

        //4.关闭

3)

    字符缓冲流

        字符输入缓冲流 BufferedReader

            新增方法 : String readLine() 读一行文字。

        字符输出缓冲流 BufferedWriter

            新增方法 : void newLine() 写一个行分隔符。

 //1.流

       BufferedReader br =  newBufferedReader(new FileReader("D://haha.txt"));

       BufferedWriter bw = new BufferedWriter(newFileWriter("D://haha2.txt"));

        //2.读写

        String msg= null;  //存储每次读入的每行内容

        while((msg= br.readLine())!=null){

           bw.write(msg);

           bw.newLine(); //换行

           System.out.println("----->"+msg);

        }

        //3.刷出

       //4.关闭

4)  

  Data流 | 基本数据类型流 : 传输数据+保留数据类型(基本数据类型+String)

        功能流-->字节流的功能流

    Data输入流 : DataInputStream

        新增方法: readXxx()

    Data输出流: DataOutputStream

        新增方法: writeXxx(Xxx args)

   注意:

    读入的顺序与写出的顺序要求保持一致

    读入的是写出的源文件

 5)

   Object流 | 对象流 | 引用数据类型流 : 数据+类型(基本|引用)  *****

        字节流的功能流

        当读写,传输对象数据,可以选择Object流,能够读写数据的同时保留数据的类型

        序列化输出流 : ObjectOutputStream

            新增方法: writeXxx(Xxx args)

                     void writeObject(Object obj)将指定的对象写入ObjectOutputStream。

        反序列化输入流 : ObjectInputStream

            新增方法: Xxx  readXxx()

                     Object readObject()从ObjectInputStream中读取一个对象。

        序列化: 将对象转化为可存储或者可传输的状态的过程

        反序列化

    注意:

        引用数据类型数据为对象数据

        先序列化后反序列化

       不是所有的类型的对象都能序列化  实现Serializable接口

        反序列化与序列化顺序一致

        transient修饰的数据不会序列化

        static属性不会序列化

        如果父类实现序列化接口,子类没有实现序列化接口,可以序列化所有内容

       如果子类实现序列化接口,但是父类没有实现,只能序列化子类的属性

    序列号 : 实现了序列化接口的类型会默认存在序列号serialVersionUID

        当类中的成员改变 ,序列号会默认更新

        作用: 检查前后版本是否统一

    解决版本不一致问题:

        手动设置序列号

    通过快捷键生成序列号:

        1.类需要实现序列化接口

        2.setting中设置(按照截图,不用背)

        3.选中类名,alt+enter生成序列号

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容

  • // qs 是一个增加了一些安全性的查询字符串解析和序列化字符串的库。主要的作用就是可以进行字符串拼接import...
    阿超子阅读 80评论 0 0
  • 亲爱的乐字节的小伙伴们,小乐又来分享Java技术文章了。上一篇写到了IO流,这篇文章着重 谈谈输入流,再下次再说输...
    乐字节阅读 125评论 0 0
  • 大家好,乐字节小乐又来了。上一篇给大家带来的是:Java中的IO流之输入流|乐字节,本文将继续讲述IO流之输出流。...
    乐字节阅读 309评论 0 2
  • 有main()方法的的类一定是主类,主类不一定是public类任何一种可运行.class文件的都可称为JVM若有p...
    LiuAoyu阅读 343评论 0 0
  • 一、步骤: 创建源 选择流 操作(读取|写出) 释放 二、流 节点流: 离数据源|程序 最近的流 1、 字节流...
    lhsjohn阅读 315评论 0 1