序列化和反序列化

Posted hankai2735

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了序列化和反序列化相关的知识,希望对你有一定的参考价值。

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);

以上是关于序列化和反序列化的主要内容,如果未能解决你的问题,请参考以下文章

C#关于序列化和反序列化

Java的序列化和反序列化

Java的序列化和反序列化

序列化和反序列化

C#序列化和反序列化到底是啥意思?

Dubbo中Map类型默认的序列化和反序列化