zoukankan      html  css  js  c++  java
  • 序列化和反序列化

    1.Properties:把银盘上的文件读入或者写出到内存数组中,Properties是有键和值共同组成的,键和值都是String类型。
    2.Properties是Hashtable的子类,Hashtable是map(存值的方法是put,取值是get(键)获取值)的子类;
    3.Proproties是集合没有泛型,键值都是字符串
    4.它是一个持久化的属性集.键和值可以存储到集合中,也可以存取到持久化的设备(硬盘/光盘/U盘);键值的来源也可以是持久化的设备
    5.Properties集合存值方式:创建Properties对象;Properties pro=new Properties();向pro集合中存值(键值对的方式):pro.setProperties("name","张三");
    从集合取值的方式(因为返回值是String所以用String类型来接):String name=pro.fetProperties("name");
    6.Properties从硬盘文件读取数据:FileReader fr=new FileReader("地址"); Properties ps=new Properties();pro.load(fr);把字符读取流fr放进Properties对象里
    7.Properties向硬盘文件中写数据:FileWtiter fw=new FileWriter("地址"); Properties ps=new Properties();
    向集合写内容;ps.setProperties("name","张三");ps.store(fw,"备注信息").1.先创建字符流对象明确地址,再创建Properties对象(pro),向pro集合中存值,再用pro调用.store() 方法向系统文件里面写内容
    8.序列化(把对象写到文件中)反序列化(把对象从文件中读取到程序)
    序列化流:ObjectOutputStream;反序列化流:ObjectInputStream
    9.序列化流(把类写进系统文件中):1.先创建字节输出对象:FileOutputStream fos=new FileOutputStream("写入的地址")
    2.创建序列化流:ObjectOutputStream oos=new ObjectOutputStream(fos);这里的序列化流要借助字节输出流fos才能输出
    序列化对象调用.writeObject()方法将类写进文件:oos.writeObject(new Person("张三",18));释放资源:oos.close();
    序列化将类中的内容写进系统文件后,在电脑上把写入的文件打开是看不懂的乱码,相当于加密了,需要反序列化才能正常查看;
    因为返回的是object所以自定义类和系统类都能写但是要能实现Serializable接口,不然不能写
    10.反序列化(将序列化后写入文本的内容再翻译到程序中进行查看):1.先确定字节输入流对象:FileInputStream fis=new FileInputStream("地址")
    2.再建立反序列化对象:ObjectInputStream ois=new ObjectInputStream(fis);3.通过ois取得文件内容对象:Object obj=ois.readObject();因为返回值是Object祖类所以用obj接
    且返回的object是person类的父类,是多态需要向下转型才能调用person类的变量和方法:
    if(obj instanceof Person){Person p=(Person)obj;system.out.println(p)} 释放资源:ois.close();
    11.打印流:只输出,只有目的地;打印字符流:PrintStream; 打印字节流:PrintWriter;输出方式:void print(String str);void println(String str)打印并换行
    12.打印输出:通过字节输出流确定输出地址:FileOutputStream fis=new FileOutputStream("F:\demo0611\abc.txt",true);加true是续写
    //创建打印流ProperStream ps=new ProperStream(fis,true);这里加true是自动刷新的意思;然后打印流对象调用打印方法;pw.print()打印不换行;pw.println()打印换行
    13.最快的赋值方式:字节流:BufferedOutputStream;字符流:BufferedWriter()加上打印输出流:字节输出流:ProperStream;字符输出流:ProperWriter
    14.获取文件后缀名:String ext=FilenameUtils.getExtension("F:\demo0611\abc.txt")最后ext=.txt;
    获取文件名:String finaname=FilenameUtils.getName("F:\demo0611\abc.txt");最后结果是abc
    15.判断文件是否以...类型结尾:boolean flag=FilenameUtils.isExtension("F:\demo0611\jdk1.8.zip","txt(文件类型名)")
    16.FileUtils读取文件内容:1.确定要读取文件的地址:File file=new File("F:\demo0611\u.txt");
    调用读取文件的方法:String conn=FileUtils.readFileToString(file);
    FileUtils复制文件夹:1.明确要复制文件夹的地址:File src=new File("F:\demo0611");2.明确要复制到那个地址:File desc=new File("D:\demo");
    3.开始复制文件夹:FileUtils.copyDirectorytoDirectory(src,desc);
    4.FileUtils复制文件:File src=new File("要复制的文件地址");File desc=new File("文件要复制到的地址");
    开始复制:FileUtils.coprFile(src,desc);

  • 相关阅读:
    在ElementUI的 MessageBox 弹框 进行api接口请求
    Vue 报错 (Emitted value instead of an instance of Error) the "scope" attribute for scoped slots have been deprecated and replaced by "slot-scope" since 2.5. The new "slot-scope" attribute can also be u
    子组件 修改父组件的属性值
    1、Flutter---配置
    Vant轮播预览图片
    vue 中 v-for 和 :key 配套使用
    js--两数之和
    blazor 中没有 blazor WebAssembly App 模板
    Deepin 安装vue-cli
    C# Linq Join & Lambda Join
  • 原文地址:https://www.cnblogs.com/hankai2735/p/11438803.html
Copyright © 2011-2022 走看看