IO流的基本知识,Zookeeper一致性级别分析

节点流和数据流


对象处理流


争对对象进行序列化和反序列化的操作

package com.stream;

import java.io.*;

import java.lang.reflect.Field;

/**

  • ObjectInput

    */

    public class ObjectStream {

    public static void main(String[] args) throws IOException, ClassNotFoundException {

    // 数据的写入

    MyObjectOutput myObjectOutput=new MyObjectOutput();

    File file=new File(“D:\Stream\Test”,“object.txt”);

    myObjectOutput.writeData(file,new User(101,“admin”));

    System.out.println(“\n----------------------------------------\n”);

    MyObjectInput myObjectInput=new MyObjectInput();

    myObjectInput.BackData(file);

    }

    }

    /**

    • 反序列化对象,即将数据从磁盘读入内存

      */

      class MyObjectInput{

      public void BackData(File file) throws IOException, ClassNotFoundException {

      if(file!=null){

      if(file.exists()){

      ObjectInputStream in=new ObjectInputStream(new FileInputStream(file));

      User user= (User) in.readObject();

      System.out.println(user);

      System.out.println(“反序列化成功!”);

      }else{

      System.out.println(“file对象不存在,读取失败!”);

      }

      }

      }

      }

      /**

      • 序列号对象,将对象数据存入硬盘

      • fileName:为要创建的对象

        */

        class MyObjectOutput{

        public void writeData(File file,User user) throws IOException {

        if(file.exists()){

        System.out.println(file.getName()+“存在”);

        ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream(file));

        out.writeObject(user);

        System.out.println(“文件数据写入成功!”);

        }else{

        System.out.println(file.getName()+“不存在!”);

        try {

        // 先创建父级目录再创建文件 mdirs():可以出创建多级目录

        boolean iscreated=file.getParentFile().mkdirs();

        if (iscreated){

        file.createNewFile();

        }

        System.out.println(file.getAbsolutePath()+“的目录及其文件创建成功”);

        }catch (Exception e){

        System.out.println(“文件创建失败!抛出异常–”+e);

        }

        }

        }

        }

        /**

        • 如果对象要被实例化则必须实现Serializable接口(该接口没有方法)

          */

          class User implements Serializable {

          private int id;

          private String user;

          public User(int id,String user){

          this.id=id;

          this.user=user;

          }

          @Override

          public String toString() {

          return “User{” +

          “id=” + id +

          “, user='” + user + ‘’’ +

          ‘}’;

          }

          }

          注意事项

          序列化版本号

          标准输入输出流

          package com.stream;

          import java.io.BufferedInputStream;

          import java.util.Scanner;

          public class Keboard {

          public static void main(String[] args) {

          // System.in:编译时内型是Inputstream 标准输入

          System.out.println(“System.in运行时的内型是:”+System.in.getClass()); //java.io.BufferedInputStream

          // 标准输出

          System.out.println(“System.out运行时的内型是:”+System.out.getClass()); //java.io.PrintStream

          // BufferedInputStream

          }

          }

          转换流


          转换流的代码示例

          package com.stream;

          import java.io.*;

          import java.lang.reflect.Field;

          /**

          • 转换流的应用

          • 转换处理流的优点有:

          •  1.将字节流转换为字符流
            
          •  2.可以指定编码
            

            */

            public class ConvertStream {

            public static void main(String[] args)throws Exception {

            File file=new File(“D:\Stream\Test\b.txt”);

            if(!file.exists()){

            file.createNewFile();

            }

            System.out.println(“请输入你的选择:”);

            char choice=(char) System.in.read();

            //向磁盘写内容

            if(choice==‘w’){

            HandleOutput(file);

            }

            // 从磁盘读内容

            else if(choice==‘r’){

            HandleInput(file);

            }

            else{

            System.out.println(“选择错误,程序结束…”);

            }

            }

            //处理输入

            public static void HandleInput(File file)throws Exception{

            // InputStreamReader: 是Reader的子类

            InputStreamReader in=new InputStreamReader(new FileInputStream(file),“gbk”);

            BufferedReader buffer=new BufferedReader(in);

            String str=buffer.readLine();

            System.out.println(“从路径-”+file.getAbsolutePath()+“读取的内容:”+str);

            System.out.println(“文件读取成功!”);

            in.close();

            buffer.close();

            小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

            深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

            因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

            由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

            如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)

            最后

            针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。

            最新整理面试题

            上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题

            最新整理电子书

            最新整理大厂面试文档

            以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

            • 如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)

              [外链图片转存中…(img-XmDGXV7F-1711135917645)]

              最后

              针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。

              最新整理面试题

              [外链图片转存中…(img-ZLOghuY8-1711135917646)]

              上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题

              最新整理电子书

              [外链图片转存中…(img-l3cuDINS-1711135917646)]

              最新整理大厂面试文档

              [外链图片转存中…(img-LpS4I6j0-1711135917647)]

              以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

              本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录