-
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里,对数组的有效对象进行序列化查看全部
-
对象序列化查看全部
-
java的文本(char)是十六位无符号整数,是字符的unicode编码(双字节编码) 文件是byte byte byte ...的数据序列 文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be, gbk)序列化为byte的存储方式查看全部
-
字符流 (操作的是文本 文本文件) 注意默认的编码方式 1)编码问题 2)认识文本和文本文件 java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码) 文件是byte byte byte 的数据序列 文本文件是文本(char)序列按照某种编码方案(utf-8,utf-16be,gbk)序列化byte的存储 3)字符流(Reader Writer) 字符的处理,一次处理一个字符 字符的底层依然是基本的字节序列 4)InputStreamreader 完成byte流解析成char流 按照编码解析 OutputStreamWrite 提供char流到byte流 按照编码处理查看全部
-
BufferedInputStream&BufferedOutputStream 提供了带缓存区的操作,一般打开文件进行写入或读取操作时,都会加上缓冲,这种流模式提高了IO的性能 从应用程序中把输入放入文件,相当于将一罐水倒入到另外一个罐中: FileOutputStream-->write()方法相当于一滴一滴地把水“转移”过去 DataOutputStream-->writeXxx()方法会方便一些,相当于一瓢一瓢把水“转移” BuffereOutputStream-->write()方法更方便,相当于一瓢一瓢先放入 桶中,在从桶中倒入到另外一个罐中查看全部
-
transient -- 用于使元素不进行默认序列化操作,但是可以自己完成序列化操作 可以用于对不需要显示在网页上的元素进行操作 在本类中添加writeObject(java.io.ObjectOutputStream s)throws IOException{ s.defaultWriteObject(); //完成系统默认序列化元素的操作 s.writeInt/String/(已阻止系统默认序列化的元素); //对自己进行序列化操作 } //ReadObject类似查看全部
-
ObjectInputStrem // 反序列化是过滤流 writeObject- 向文件输入对象,包括字符串和数组 ObjectOutputStream // 序列化 readObject- 从流中读取文件,需要1将其对象转化成所期望的类型 Serializable -- 要想实现对象序列化必须实现此接口 在使用序列化和反序列化时需要先创建FileInput/OutputStream对象再使用·序列化机制查看全部
-
BufferedReader br = new BufferReader(new InputStreamReader (new FileInputStream("E:\\java\\a.txt")));//文件读取缓冲区 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter (new FileOutputStream("E:\\java\\c.txt")));//文件输入缓冲区 bw.newLine();//读取一行 PrintWriter pw = new PrintWriter("E:\\java\\c.txt");//替代BufferedWriter pw.println();//读取一行 PrintWriter pw1 = new PrintWriter(OutputStreamWriter,boolean autoFlush);//可以进行自动刷新操作查看全部
-
InputStreamReader //文件读取转换器<br> OutputStreamWriter //文件写入转换器<br> char[] ch = new char[10*1024];//对文件进行先存储<br> String s = new String(ch,0,c);//把读取到的文件转化成字符串 在转换流中,在操作文件时需要把文件的编码格式编程自身的编码格式,否则是系统默认的UTF-8的编码格式查看全部
-
字符流查看全部
-
缓冲事例查看全部
-
引用 Java.IO.File类表示文件或目录,只用于表示文件或目录得信息,不能用于文件的访问。 常用的API: 1.创建File对象:File file=new File(String path);注意:File.seperater();获取系统分隔符,如:”\“. 2.boolean file.exists();是否存在. 3.file.mkdir();或者file.mkdirs();创建目录或多级目录。 4.file.isDirectory()或者file.isFile()判断是否是目录或者是否是文件。 5.file.delete();删除文件或目录。 6.file.createNewFile();创建新文件。 7.file.getName()获取文件名称或目录绝对路径。 8.file.getAbsolutePath()获取绝对路径。 9.file.getParent();获取父级绝对路径。 10.file.getSize();获取文件大小。 11.file.getFormat();获取文件格式名。查看全部
-
字节缓冲流查看全部
-
String s="慕课ABC"; byte[] bytes1=s.getBytes();//这是把字符串转换成字符数组,转换成的字节序列用的是项目默认的编码 for(byte b: bytes1) System.out.println(Integer.toHexString(b & 0xff)+" ");// & 0xff是为了把前面的24个0去掉只留下后八位 //toHexString这个函数是把字节(转换成了Int)以16进制的方式显示 byte[] bytes1=s.getBytes("gbk");//也可以转换成指定的编码 gbk编码: 中文占用两个字节,英文占用一个字节 utf-8编码:中文占用三个字节,英文占用一个字节 java是双字节编码,是utf-16be编码 utf-16be编码:中文占用两个字节,英文占用两个字节 当你的字节序列是某种编码时,这个时候想把字节序列变成字符串,也需要用这种编码方式,否则会出现乱码 String str1=new String(bytes4);//这时会使用项目默认的编码来转换,可能出现乱码 要使用字节序列的编码来进行转换 String str2=new String(bytes4,"utf-16be"); 文本文件就是字节序列,可以是任意编码的字节序列 如果我们在中文机器上直接创建文本文件,那么该文件只认识ANSI编码(例如直接在电脑中创建文本文件)查看全部
-
字节流查看全部
举报
0/150
提交
取消