-
io流2查看全部
-
最后一种拷贝方式最快吗?是什么拷贝,需要自己实验查看全部
-
IO流查看全部
-
这一节没看懂,估计计算机组成原理需要好好看下书,标记一下查看全部
-
使用RandomAccessFile的步骤查看全部
-
File和RandomAccessFile查看全部
-
文件编码:<br> 1.gbk:一个中文字符两个字节,一个英文字符一个字节,是转换成字节序列时的默认编码方式。<br> 2.utf-8:一个中文字符三个字节,一个英文字符一个字节<br> 3.utf-16be:java的编码方式,一个中文和一个英文字符都是两个字节<br> 4.字节序列转换成字符时要采用相同的编码方式,否则会乱码 5.文本文件就是字节序列,可以是任意编码的字节序列,但是如果直接在中文机器上创建文本文件,那么该文本文件只认识ansi编码 <br>查看全部
-
1 编码问题 2 File类的使用 3 RandomAccessFile的使用 4 字节流的使用 5 字符流的使用 6 对象的序列化和反序列化查看全部
-
序列化过程中子父类构造函数问题 一、父类实现了serializable接口,子类继承就可序列化。 1、子类在反序列化时,父类实现了序列化接口,则不会递归调用其构造函数。 二、父类未实现serializable接口,子类自行实现可序列化 2、子类在反序列化时,父类没有实现序列化接口,则会递归调用其构造函数。 *** 结论:【反序列化时】,向上递归调用构造函数会从【可序列化的一级父类结束】。即谁实现了可序列化(包括继承实现的),谁的构造函数就不会调用。查看全部
-
序列化: transient 关键字:被transient修饰的元素,该元素不会进行jvm默认的序列化,但可以自己完成这个元素的序列化 注意: (1)在以后的网络编程中,如果有某些元素不需要传输,那就可以用transient修饰,来节省流量;对有效元素序列化,提高性能。 (2)可以使用writeObject自己完成这个元素的序列化。ArrayList就是用了此方法进行了优化操作。ArrayList最核心的容器Object[] elementData使用了transient修饰,但是在writeObject自己实现对elementData数组的序列化。只对数组中有效元素进行序列化。readObject与之类似。 (3)java.io.ObjectOutputStream.defaultWriteObject(); // 把jvm能默认序列化的元素进行序列化操作 java.io.ObjectOutputStream.writeInt(age);// 自己完成序列化 (4) java.io.ObjectOutputStream.defaultReadObject();// 把jvm能默认反序列化的元素进行反序列化 this.age = java.io.ObjectOutputStream.readInt(); // 自己完成age的反序列化操作查看全部
-
一、被序列化的對象要實現序列化接口: public class Student implements Serializable{ 二.對象的序列化: public static void main(String[] args) throws Exception{ //序列化后存到這個文件里 String file = "demo/obj.dat"; //1.对象的序列化 ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream(file)); Student stu = new Student("10001", "张三", 20); oos.writeObject(stu); oos.flush(); oos.close();查看全部
-
IO——对象的序列化和反序列化 一、概念 1、对象序列化,就是将Object转换成byte序列,反之叫对象的反序列化 2、序列化流(ObjectOutputStream),字节的过滤流 —— writeObject()方法 反序列化流(ObjectInputStream)—— readObject()方法 3、序列化接口(Serializable) 对象必须实现序列化接口,才能进行序列化,否则将出现异常。 这个借口,没有任何方法,只是一个【标准】 二、transient关键字 1、transient修饰的元素,不会进行JVM默认的序列化:如int transient age = 10;在序列化和反序列化后,age的值为默认分配的值0 2、可以自己通过重写序列化操作方式,来对transient修饰的元素进行想要的序列化。 ***方法:通过从ArrayList中拿到writeObject()和readObject()方法,进行自写完成。 · 先执行s.defaultWriteObject(); 和 s.defaultReadObject()方法 · 再对于无法默认序列化的成员,可以进行.writeObject(obj)和this.obj = s.readObject()完成序列化 3、这样做的目的是提高效率。如ArrayList里,对数组的有效对象进行序列化查看全部
-
readInt readLong 方法都是对FileInputStream方法的包装 DataOutputStream/DataInputStream 对“流”功能的扩展,可以更加方便的读取 int,long, 字符等类型数据 DataOutputStream:使用FileOutputStream构造出来,通过包装FileOutput,可以调用FileOutput类的write方法来构造新的更方便的写方法: new DataOutputStream(new FileOutptStream(file)) wrieteUTF()采用utf-8编码写出字符串 用utf-16be写出字符串,或字符串数组 写完之后一定要关闭流 数据输入输出流: DataInputStream、DataOutputStream 是对“流”功能的扩展,方便读写 DataOutputStream dos = new DataOutputStream(new FileOutputStream(file)); dos.writeInt(10); dos.writeLong(10l);字母l dos.writeDouble(10.5); //采用utf-8编码写出 dos.writeUTF("中国"); //采用utf-16be编码写出 dos.writeChars("中国");查看全部
-
对象序列化就是将object装换成byte序列(ObjectOutPutStream),WriteObject。 对象反序列化就是将byte装换成objectInputStream。ReadObeject 涉及到网络传输的 就得需要用到序列化,在对象需要保存未文件时,也需要序列化(文件在读、写操作时,都要使用byte)。 反序列化 读取出的内容已byte显示展示,反系列化作用就是将 byte装换成对象(我们能看懂的)展示在文件中 故:::::: 序列化装换成byte(我们看不到 01 形式) 反序列化(01 装换成我们看得懂的 )查看全部
-
FileReader和FileWriter不能增加编码参数,所以当项目和读取文件编码不同时,就会产生乱码。 这种情况下,只能回归InputStreamReader和OutputStreamWriter。 BufferedReader -- > readLine -> 读一行 不识别换行符,不会自动换行 BufferedWriter/PrintWriter -- > writeLine/println -> 写一行,不会自动换行/自动换行 在文件中换行,可以用newLine();实现查看全部
举报
0/150
提交
取消