首页 > 其他分享 >day16

day16

时间:2024-10-19 09:48:09浏览次数:6  
标签:String 构造方法 read day16 FileOutputStream new public

IO流

IO流【输入输出流】:
        按照流向划分:
            输入流:外部数据 -> java程序
            输出流:java程序 -> 外部数据

        按照数据类型划分【根据使用记事本打开是否能够看懂来决定】:
            字节流【万能流】:
                字节输出流:
                    OutputStream(抽象类)
                        - FileOutputStream(实现子类)【普通的字节输出流】
                        构造方法:
                          FileOutputStream(File file)
                          FileOutputStream(String name)

                        - BufferedOnputStream【字节缓冲输出流】:
                          构造方法:
                            BufferedOnputStream(FileOutputStream fos)

                字节输入流:
                    InputStream(抽象类)
                        FileInputStream【普通的字节输入流】:
                          构造方法:
                            FileInputStream(File file)
                            FileInputStream(String name)
                          成员方法:
                            public int read()
                            public int read(byte[] b)

                        BufferedInputStream【字节缓冲输入流】:
                        构造方法
                          BufferedInputStream(FileIutputStream fis)
            字符流:
              字符输入流:
                  Reader【抽象类】
                      - InputStreamReader【具体实现子类】
                          构造方法:
                            IutputStreamWriter(FileIutputStream fos)
                          - FileReader【继承自InputStreamReader】
                           构造方法:
                              FileReader(String name)等同于IutputStreamReader(new FileIutputStream(String name))
              字符输出流:
                  Writer【抽象类】
                      - OutputStreamWriter【具体实现子类】
                          构造方法:
                            OutputStreamWriter(FileOutputStream fos)

                          - FileWriter【继承自OutputStreamWriter】
                           构造方法:
                              FileWriter(String name)等同于OutputStreamWriter(new FileOutputStream(String name))

读取

// public int read() 一次读取一个字符
//        System.out.print((char) isr.read());
//        System.out.print((char) isr.read());
//        int i = 0;
//        while ((i = isr.read()) != -1) {
//            System.out.print((char) i);
//        }

        //public int read(char[] cbuf) 一次读取一个字符数组
        char[] chars = new char[1024];
        int length = 0;
        while ((length= isr.read(chars))!=-1){
            String s = new String(chars, 0, length);
            System.out.print(s);
        }

序列化及反序列化

序列化:将对象转化成数据流一样在网络中传输
        对象输出流:ObjectOutputStream
        只有实现了Serializable接口的类的对象才可以进行序列化

    反序列化:将网络中数据流还原成一个对象
        对象输入流:ObjectInputStream

   我们正常写一个对象之后,读取一个对象都是没有问题的。
   但是当我们修改了原来的类的时候,再次读取存储的对象就报错了
   java.io.InvalidClassException:
    com.shujia.day16.Teacher;
    local class incompatible:
        stream class desc serialVersionUID = -4530247781226673719,
        local class serialVersionUID = -4180828856871739850

   若不想让某一个成员序列化的话,只需要在该成员前面加上transient关键字
public class ObjectOutputStreamDemo1 {
    public static void main(String[] args) throws Exception{
//        write();

        read();
    }
    public static void read() throws Exception{
        //ObjectInputStream(InputStream in)
        //创建从指定的InputStream读取的ObjectInputStream
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("java/src/com/shujia/day16/obj.txt"));
        Object o = ois.readObject(); //Object o = new Teacher("小虎", 18)
        Teacher t1 = (Teacher)o;
        System.out.println(t1);


        ois.close();
    }

    public static void write() throws Exception{
        Teacher t1 = new Teacher("小虎", 18);
        //创建ObjectOutputStream对象
        //ObjectOutputStream(OutputStream out)
        //创建一个写入指定的OutputStream的ObjectOutputStream。
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("java/src/com/shujia/day16/obj.txt"));
        oos.writeObject(t1);
        oos.flush();

        //释放资源
        oos.close();
    }
}

标签:String,构造方法,read,day16,FileOutputStream,new,public
From: https://www.cnblogs.com/flxf/p/18475514

相关文章

  • java_day16_IO、序列化
    一、IO流IO流划分IO流【输入输出流】:按照流向划分:输入流:外部数据->java程序输出流:java程序->外部数据按照数据类型划分【根据使用记事本打开是否能够看懂来决定】字节流【万能流】:字节输入流:InputStream【抽象类】-......
  • Day16 break-continue-goto
    Day16break-continue-gotobreak在任何循环语句的主体部分,可用其控制循环流程,强行退出循环,不执行循环中剩余的语句,break语句也在switch语句中使用。continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。关于g......
  • 代码随想录算法训练营day16| 513.找树左下角的值 112.路径总和 106.从中序和后序
    学习资料:https://programmercarl.com/0513.找树左下角的值.html#算法公开课递归、回溯返回值:True/False,root构建二叉树TrueNode(root_value)513.找树左下角的值(实例变量self.result,self.maxdepth;找到叶子节点,若深度>self.maxdepth,则更新最大深度;只考虑左和右子树,用递归+......
  • 代码随想录算法训练营Day16 | 513.找树左下角的值、112.路径总和、113.路径总和Ⅱ、10
    目录513.找树左下角的值112.路径总和113.路径总和Ⅱ106.从中序与后序遍历序列构造二叉树105.从前序与中序遍历序列构造二叉树513.找树左下角的值题目513.找树左下角的值-力扣(LeetCode)给定一个二叉树的根节点root,请找出该二叉树的最底层最左边节点的值。假......
  • Day16 二叉树part06| LeetCode 530.二叉搜索树的最小绝对差 ,501.二叉搜索树中的众数,23
    530.二叉搜索树的最小绝对差530.二叉搜索树的最小绝对差classSolution{publicList<Integer>res=newArrayList<>();voidtraversal(TreeNoderoot){if(root==null)return;traversal(root.left);......
  • C语言学习笔记 Day16(文件管理--下)
    Day16 内容梳理:C语言学习笔记Day14(文件管理--上)-CSDN博客C语言学习笔记Day15(文件管理--中)-CSDN博客目录Chapter10 文件操作10.5文件状态10.6文件的随机读写fseek()、rewind()(1)fseek():移动光标并开始读写(2)rewind():将光标重置回文件开头10.7文件的删除remove(......
  • 代码随想录day16--图论
    题目描述:给定一个由1(陆地)和0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。输入描述:第一行包含两个整数N,M,表示矩阵的行数和列数。后续N行,每行包含M个数字,数字为1或者0。输出描......
  • 代码随想录Day16
    513.找树左下角的值给定一个二叉树的根节点root,请找出该二叉树的最底层最左边节点的值。假设二叉树中至少有一个节点。示例1:输入:root=[2,1,3]输出:1示例2:输入:[1,2,3,4,null,5,6,null,null,7]输出:7提示:二叉树的节点个数的范围是[1,104]-231<=......
  • 输出流FileOutputStream day16
    packagecom.shujia.day16.ketang;importjava.io.File;importjava.io.FileOutputStream;/*IO流:输入输出流按照流向划分:输入流:将外部存储数据-->java输出流:java-->外部存储工具中按照类型划分:字节流(万......
  • 实训day16(7.29)
    (一)Web的学习与认知1.web基本概念和常识(1)Web:为⽤户提供的⼀种在互联⽹上浏览信息的服务,Web服务是动态的、可交互的、跨平台的和图形化的。(2)Web服务为⽤户提供各种互联⽹服务,这些服务包括信息浏览服务,以及各种交互式服务,包括聊天、购物、学习等等内容。(3)Web应⽤开发也......