-
序列化过程中子父类构造函数问题 一、父类实现了serializable接口,子类继承就可序列化。 1、子类在反序列化时,父类实现了序列化接口,则不会递归调用其构造函数。 二、父类未实现serializable接口,子类自行实现可序列化 2、子类在反序列化时,父类没有实现序列化接口,则会递归调用其构造函数。 *** 结论:【反序列化时】,向上递归调用构造函数会从【可序列化的一级父类结束】。即谁实现了可序列化(包括继承实现的),谁的构造函数就不会调用。 [ 收起全文 ] 5天前42 一个人潇洒的生活 1.一个类实现了序列化接口,其子类都可以进行序列化操作 2.子类序列化,递归调用父类的构造器,原理,对象实例化构造函数就是被递归调用的; 3.对子类对象进行反序列化操作时,如果其父类没有实现序列化接口,那么其父类的构造函数会被调用;如果父类实现了序列化接口,那么构造函数不会被调用查看全部
-
transient关键字修饰的属性默认是不能序列化的,但是可以使用writeObject自己完成这个元素的序列化。ArrayList就是用了此方法进行了优化操作。ArrayList最核心的容器Object[] elementData使用了transient修饰,但是在writeObject自己实现对elementData数组的序列化。只序列化实际有的元素,对于数组中空的元素不进行序列化。 s.defaultWriteObject(); for (int i=0; i<size; i++) s.writeObject(elementData[i]);查看全部
-
1 对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化 2 序列化流(ObjectOutputStream),是过滤流----WriteObject 反序列化流(ObjectInputStream)----readObject 3 序列化接口(Serializable) 对象必须实现序列化接口,才能进行序列化,否则将出现异常 这个接口,没有任何方法,只是一个标准 [ 收起全文查看全部
-
字符流的过滤器: BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file))); line = br.readLine(); 一次读取一行,不能识别换行 一次写入一行 BufferedWriter bw.write(line); bw.newLine(); 单独换行操作 bw.flush(); PrintWriter pw.println(line);//自动换行 pw.flush(); [ 收起全文 ]查看全部
-
5.字符流:字符流分为输出流(Reader)和输出流(Writer)。操作的是文本文件。 字符处理,一次处理一个字符 字符处理底层还是基本的字节序列 InputStreamReader:完成byte流解析为char流,按照编码解析 FileInputStream in = new FileInputStream("e:\\javaio\\imoocutf8.txt"); //获取字符输入流 InputStreamReader isr = new InputStreamReader(in,"utf-8");//默认项目的编码,操作的时候,要写文件本身的编码格式 OutputStreamWriter:提供char流到byte流,按照编码处理 FileOutputStream out = new FileOutputStream("e:\\javaio\\imoocutf81.txt"); //获取字符输出流 OutputStreamWriter osw = new OutputStreamWriter(out,"utf-8"); FileReader/FileWriter:可以直接写文件名的路径。与InputStreamReader相比坏处:无法指定读取和写出的编码,容易出现乱码。 FileReader fr = new FileReader("e:\\javaio\\imooc.txt"); //输入流 FileWriter fw = new FileWriter("e:\\javaio\\imooc2.txt");//输出流 [ 收起全文 ]查看全部
-
1)编码问题 2)认识文本和文本文件 java的文本(char)是16位无符号编码,是字符的Unicode编码(双字节编码) 文件是byte byte。。。的数据序列 文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果 3)字符流分为输入流(Reader)和输出流(Writer) 字符处理,一次处理一个字符 字符处理底层还是基本的字节序列 InputStreamReader 完成byte流解析为char流,按照编码解析 OutputStreamWriter 提供char流到byte流,按照编码处理 [ 收起全文 ]查看全部
-
BufferInputStream&BufferOutputStream 这两个流类为IO提供了带缓冲的操作,一般打开文件进行写入或读取操作时,都会加上缓冲,提高了IO性能 从应用程序中吧文件输入,相当于将一缸水导入另一缸水; FileOutputStream-->write()相当于一滴一滴把水转移过去 DataInputStream-->writeXXX()方便一些,相当于一瓢一瓢把水转移过去 BufferInputStream-->write()更加方便一些,相当于将水先存入桶中,一桶转查看全部
-
一个类进行序列化操作,子类也进行了序列化操作查看全部
-
transient可以帮助我们提高性能。 把ArrayList数组中有效元素进行序列化和反序列化。查看全部
-
对象的序列化,反序列化 1 对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化 2 序列化流(ObjectOutputStream),是过滤流----WriteObject 反序列化流(ObjectInputStream)----readObject 3 序列化接口(Serializable) 对象必须实现序列化接口,才能进行序列化,否则将出现异常 这个接口,没有任何方法,只是一个标准查看全部
-
字符流的过滤器 BufferedReader ——》readline 一次读一行 BufferedWriter/PrintWriter --》写一行查看全部
-
字符流 1 编码问题 2 认识文本和文本文件 java中的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码) 文件时byte byte byte ...的数据序列 文本文件时文本(char)序列安装某种编码方案(utf-8,utf-16be,gbk)序列化为byte的存储结果 3 字符流(Reader Writer) 字符的处理,一次处理一个字符 字符的底层仍然是基本的字节序列 字符流的基本实现 InputStreamReader 完成byte流解析为char流,按照编码解析 OutputStreamWriter 提供char流到byte流,按照编码处理查看全部
-
RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件。 RandomAccessFile 支持随机访问文件,可以访问文件的任意位置 (1)java文件模型 在硬盘上的文件是byte byte byte存储的,是数据的集合 (2)打开文件 有两种模式“rw”(读写) “r”(只读) RandomAccessFile raf = new RandomAccessFile(file,"rw") 文件指针,打开文件时指针在开头 pointer=0; (3)写方法 raf.write(int)--->只写一个字节(后8位),同时指针指向下一个位置,准备再次写入 (4)读方法 int b=raf.read()-->读一个字节 (5)文件读写完成以后一定要关闭(Oracle官方说明)查看全部
-
file.list() 返回当前目录下的子目录和文件的字符串数组名称 file.listFiles() 返回当前目录下的所有子目录和文件的文件数组名称 File[] files = dir.listFiles();//返回的是直接子目录(文件)的抽象 if (file!=null && files.length > 0){ for(File file:files){ if(file.isDrectory()){ listDirectory(file); }else{ System.out.println(file); } } }查看全部
-
java 是双字节编码 utf-16be查看全部
举报
0/150
提交
取消