021.12 IO流 ObjectStream对象序列化】的更多相关文章

内容:通过文件存储对象我们遇到的问题,需要保存对象到硬盘中,如何解决这个就是用来解决的 用法:1.创建流对象FileOutputstream2.创建ObjectOutputStream对象与FileOutputStream关联3.使用writeObject方法写入对象,或者通过readObject读取对象对象要求继承Serializable接口,该接口为类提供一个序列号,用于读取的时候相对应,保证不出错,显示该序列号 具体如下代码: //ObjectStreamDemo.java public…
写入 获取ObjectOutputStream对象,new出来,构造参数:FileOutputStream对象目标文件 调用ObjectOutputStream对象的writeObject()方法,参数:要保存的对象 调用ObjectOutputStream对象的close()方法,关闭流 此时会报异常,NotSerialzeableException,是因为目标类没有实现Serializable接口,这个接口没有方法,称为标记接口,会在改变类之后,生成新的序列号,保存的文件读取时会显示错误信息…
对象和方法:RandomAccessFile:文件操作对象,Java提供getFilePointer:获取文件指针 特点:1.只能操作文件2.既能读,又能写3.里面维护了一个数组,内部定义了字符的读和写4.文件不存在则会创建,文件存在不会覆盖,保持原样5.该对象打开文件,指针在开头.6.随机的意思是可以随意在哪更改.......... 打开方式有:"r"—以只读方式打开,"rw"—打开以便读取和写入,文件不存在则会尝试创建 //  "rws"—相…
一.序列化概念 几乎只要是我们的java开发,就一定会存在有序列化的概念,而正是有序列化的概念逐步发展,慢慢也有了更多的系列化的标准.--所谓的对象序列化指的是将内存中保存的对象,以二进制数据流的形式进行处理,可以实现对象的保存或网络传输.我们首先需要知道所谓的对象都是处在堆内存当中的(每一块堆内存中描述的就是我们所说的真正的对象),我们所需要做的就是将内存中的数据保存为文件或者发送到远程的服务器上,这样所有的客户都可以获取到我的对象,也可以将是数据保存到数据库中,在需要的时候进行数据的读取.-…
对象的序列化和反序列化 1)对象序列化,就是将Object对象转换成byte序列,反之叫对象的反序列化. 2)序列化流(ObjectOutputStream),是字节的过滤流—— writeObject()方法 反序列化流(ObjectInputStream)—— readObject()方法 3)序列化接口(Serializable) 对象必须实现序列化接口,才能进行序列化,否则将出现异常. 注:这个接口,没有任何方法,只是一个[标准] 一.最基本的序列化和反序列过程 序列化和反序列都是以Ob…
1.File类 File类可以在程序中 操作文件和目录.File类是通过建立File类对象,在调用File类的对象来进行相关操作的. 示例: public class Demo01 { public static void main(String[] args) { File f = new File("f:/我的歌声里.txt"); //访问文件名相关 String name = f.getName(); System.out.println("文件名:" + n…
第十章.序列化流 序列化流和反序列化流概述 序列化:用一个字节序列表示一个对象,该字节序列包含该对象的数据.对象的类型和对象中存储的属性等等信息.字节序列写出到文件后,相当于文件中持久保存了一个对象的信息. 反序列话:从文件中将字节序列读取回来,重构对象. 序列化与反序列化图示1: 序列化与反序列化图示2: Serializable 序列化和反序列化的时候,会抛出NotSerializableException,没有序列化异常. 类通过实现 java.io.Serializable 接口以启用其…
一.对象流 1.序列化与反序列化 序列化:将内存中的Java对象保存到磁盘中或通过网络传输出去. 反序列化:将磁盘文件中的对象还原为内存中的一个Java对象. 用途: (1)将对象保存到物理硬盘:比如Web服务器中的Session对象,当有10万用户并发访问时,有可能出现10万个Session对象,内存可能吃不消,从而导致OOM.于是Web容器就会把一些Session序列化到硬盘中,等需要时,再把硬盘中的对象反序列化到内存中. (2)将对象在网络上进行传输:当两个进程进行通信时,数据都会以二进制…
一.I/O 流(java 如何实现与外界数据的交流) 流定义: 任何有能力产出数据的数据源对象或者有能力接收数据的数据源对象.他屏蔽了实际的I/O设备处理数据的细节. 1.Input/Output:指跨越出了JVM 的边界,与外界数据的源头或者目标数据源进行数据交换. 2.流的分类: 按流向分为输入流和输出流: 按传输单位分为字节流(Stream)结尾的和字符流(Reader和Writer): 按功能还可以分为节点流和过滤流. 节点流:负责数据源和程序之间建立连接:(相当于裸枪) 过滤流:用于给…
一.对象序列化 1.1.对象序列化 被操作的对象需要实现Serializable接口 1.2.对象序列化流ObjectOutputStream与ObjectInputStream ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化. ObjectOutputStream 和 ObjectInputStream 分别与 FileOutputStream 和 FileInputStream 一起使用时,可以为应用程序提供对对象图形的…
File类:构造方法    * File(String pathname):根据一个路径得到File对象    * File(String parent, String child):根据一个目录和一个子文件/目录得到File对象    * File(File parent, String child):根据一个父File对象和一个子文件/目录得到File对象 创建功能    * public boolean createNewFile():创建文件 如果存在这样的文件,就不创建了,返回fals…
###################################################################################IO流的规律总结:解决的问题,开发中具体使用哪个流对象的问题1,明确数据源,数据目的    就是在明确要使用的IO体系.InputStream   OutputStream     Reader       Writer    需求中做为源:意味着是读    使用:InputStream    Reader        需求中做为…
########################################IO流:    IO:用于处理设备上的数据的技术.设备:内存,硬盘,光盘    流:系统资源,Windows系统本身就可以操作的设备.各种语言只是使用系统平台的这个资源.并对外提供了各种语言自己的操作功能,这些功能最终调用的是系统资源,使用完资源一定要记住:释放. File类直接有了分隔符:File.separator"c:"+File.separator+"a.txt" #######…
对象序列化的目标是将对象保存在磁盘中或者允许在网络中直接传输对象.对象序列化机制循序把内存中的java对象转换成平台无关的二进制流,从而允许把这种二进制流持久的保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点.其他程序一旦获得了这种二进制流,都可以将这种二进制流恢复成原来的java对象. 对象序列化样例: public class People implements Serializable { public People(String name,String sex) { this.n…
对象序列化的概念 对象序列化使得一个程序可以把一个完整的对象写到一个字节流里面:其逆过程则是从一个字节流里面读出一个事先存储在里面的完整的对象,称为对象的反序列化. 将一个对象保存到永久存储设备上称为持续性.对象的序列化即可实现持续性. 一个对象要想能够实现序列化,必须实现  Serializable 接口或 Externalizable 接口. 对象序列化的作用 一.对象序列化可以实现分布式对象.主要应用例如:RMI(远程方法调用)要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时…
我们按功能可以将IO流分为节点流与处理流 节点流:可以直接从数据源或目的地读写数据 处理流(装饰流):不直接连接到数据源或目的地,是其他流(必须包含节点流)进行封装.目的主要是简化操作和提高性能. Buffered流的引入 当我们使用节点流来传输数据时,节点流单次传输的数据太少,会频繁读写硬盘,这使得整体速度不高,就像蚂蚁搬家. 这时我们引入处理流Buffered流,就好像找来一辆卡车来搬家,单次运输的数据多了,访问硬盘的次数少了,速度得到提升. copy文件示例 不引入Buffered流cop…
当创建对象时,程序运行时它就会存在,但是程序停止时,对象也就消失了.但是如果希望对象在程序不运行的情况下仍能存在并保存其信息,将会非常有用,对象将被重建并且拥有与程序上次运行时拥有的信息相同.可以使用对象的序列化. 对象的序列化:   将内存中的对象直接写入到文件设备中 对象的反序列化: 将文件设备中持久化的数据转换为内存对象 基本的序列化由两个方法产生:一个方法用于序列化对象并将它们写入一个流,另一个方法用于读取流并反序列化对象. ObjectOutput writeObject(Object…
对象流 1.1对象流简介 1.2对象流分类 输入流字节流处理流:ObjectInputStream,将序列化以后的字节存储到本地文件 输出流字节流处理流:ObjectOutputStream 1.3序列化与反序列化 序列化: [将对象--> 字节的过程] 用ObjectOutputStream类保存基本数据类型或对象的机制叫序列化 反序列化 [将字节--> 对象的过程] 用ObjectInputStream类读取基本数据类型或对象的机制叫反序列化 注意: 能被序列化的对象所对应的类必须实现ja…
对象流 对象流就是对引用数据类型进行操作 序列化:将对象的状态信息转换为可以存储或传输的形式的过程,因此类需要序列化后才可以存储到文件中 对象输出流: 很简单,就三句话,将把一个对象导入指定文件中,要注意:被导入的对象必须要实现一个借口(Serializable,可序列化接口),而这个接口就是一个标志,在没有作用,标志你可以被导入到硬盘中 我们写进文件中的信息我们看不懂,但是计算机可以看懂 package com.bjsxt.test08; import java.io.*; public cl…
打印流 字节流打印流 PrintStream 字符打印流 PrintWriter打印流的特点: A:只有写数据的,没有读取数据.只能操作目的地,不能操作数据源.(只能写入数据到文件中,而不能从文件中提取数据) B:可以操作任意类型的数据. C:如果启动了自动刷新,能够自动刷新. D:该流是可以直接操作文本文件的. 哪些流对象是可以直接操作文本文件的呢?  FileInputStream  FileOutputStream  FileReader  FileWriter  PrintStream…
用的频率不高特点:读取管道和写入管道对接,需要是用多线程技术,单线程容易死锁 使用connect方法连接两个流,实现边读编写,和node.js的管道流差不多 //##主函数位置 public static void main(String[] args) throws IOException { //创建两个管道对象 PipedInputStream pis = new PipedInputStream(); PipedOutputStream pos = new PipedOutputStre…
序列流:SequenceInputStream特点:流对象有序排列解决问题:将多个输入流合并成一个输入流,将多个源合并成一个源,对于多个源的操作会变简单. 构造函数参数就是输入流,一初始化就合并了多个流. public static void main(String[] args) throws IOException { //获取枚举,Vector有,但是效率低,使用ArrayList ArrayList<FileInputStream> al = new ArrayList<File…
#######################################################################################获取指定目录下所有的.java文件(包含子目录中的),并将这些java文件的绝路路径写入到一个文件中.建立一个java文件清单列表./* * 思路: * 1,一看到包含子目录,必须递归. * 2,写数据到文件,输出流. * 3,继续分析,发现只要.java ,需要过滤器. * 4,满足过滤的条件的文件有可能非常多,先进行存储…
内容:文件读取方法,读取方法例子,read(buf)方法中buf的取值,字节流缓冲区对象—提高读取速度/// 文件读取方法:fis.read(),fis.read(buf),具体看例子 例子:文件读取——读取文件,显示出来 public class FileInputStreamDemo { public static void main(String[] args) { //为了确保文件一定在读之前一定存在.将字符串路径封装成File对象 File file = new File("F:&qu…
序列化 @Test public void test14() throws IOException { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object1.dat")); oos.writeObject(new Person("张三", 20)); oos.close(); } 反序列化 @Test public void test15() throws IOEx…
IO包中的其他类操作基本数据类型:DataInputStream与DataOutputStream操作字节数组:ByteArrayInputStream与ByteArrayOutputStream操作字符数组:CharArrayReader与CharArrayWriter操作字符串:StringReader与StringWriter ####DataInputStream与DataOutputStream public static void main(String[] args) throws…
内容:PrintStream:字节流    PrintWriter:字符流 PrintStream public static void main(String[] args) throws IOException { //创建对象 PrintStream ps = new PrintStream("myfile\\print.txt"); //写入整数 ps.write(355); //文件里面是c,只是写入整数的最低字节,也就是最后8位二进制 ps.print(355); //文件…
###############基本功能写 FileWriter fw = new FileWriter("xxx.txt"); fw.write("哈喽"); fw.close(); 读 FileReader fr = new FileReader("xxx.txt"); int ch = 0; while((ch = fr.read()) != -1){ System.out.println((char)ch); } fr.close(); #…
默认使用的就是gbk编码,这里的例子改成了utf8编码 写入—编码 private static void writeText() throws IOException { FileOutputStream fos = new FileOutputStream("utf8.txt"); OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8"); osw.write("求"); osw…
内容:流的分类,文件写入(字节输出流),异常处理,获取一个文件夹下的特定文件集合 字节流的抽象基类:InputStream,OutputStream字符流的抽象基类:Reader,Writer由这四个类派生出来的子类名称都是以父类名作为子类名的后缀.如:InputStream的子类FileInputStream,Reader的子类FileReader ###################################################文件写入,字节输出流 private sta…