IO流初识

Day21-IO

  1. IO
    1.1 数据流
    数据流有两个类:(用于读取和写出 基本数据类型、String类的数据)
    DataOutputStream按照一定的格式输出,再通过DataInputStream以一定格式读入。
    在通过协议传输的信息的网络上是非常适用。
    输入要和输出的顺序一致
    DataInputStream 和 DataOutputStream分别“套接”在 InputStream 和 OutputStream 子类的流上。

1.2 对象流

  • 创建对象的4种方式
  •  1 new   用的最多
    
  •  2 反射机制
    
  •  3 反序列化
    
  •  4 clone 不用了,被序列化代替 , Object.clone()
    

硬盘中的数据是可以持久化的(长期保存) , 但是内存中不同(短期),比如关机之后 就没了。
序列化技术----------------把对象持久化保存到硬盘

  • 序列化 : 把对象保存到硬盘中,可以持久化存储 ObjectOutputStream
  • 反序列化 : 把硬盘中的对象文件,载入到内存中 ObjectInputStream

要被序列化的对象所在的类,必须实现Serializable接口,该接口中没有任何方法,仅仅是一种标记,以被编译器做特殊的处理

  • 序列化目的 : 1 长时间存储对象 2 对象传递
    应用场景 :
  •  	序列化就是将数据对象转换为二进制流,从而能够进行数据持久化和网络传输的过程
    
  •  	如果对象不进行序列化操作,那么就没有办法存储和传输
    
  •  	反序列化就是序列化的逆向处理过程
    
  •  传递过程 : 
    
  •  	数据对象--> 序列化-->二进制流--> 加密处理--> 网络传输 --> 数据解密--> 反序列化--> 数据对象
    

1.2.1 serualVersionUID
如果不加UID,每次更改User类,都需要重新序列化,否则反序列化会报错

加上该常量后,更改类,不需要重新序列化 直接反序列化也是可以用的
1.2.2 Transient
* transient 使用该修饰符修饰,则该属性不会被序列化
* 当反序列化的时候,再访问该属性,就是对应数据类型的默认值

1.3 File
java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关
File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。
如果需要访问文件内容本身,则需要使用输入/输出流。

想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对 象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
File对象可以作为参数传递给流的构造器
1.3.1 构造方法
public File(String pathname)以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
public File(String parent,String child)以parent为父路径,child为子路径创建File对象。
public File(File parent,String child)根据一个父File对象和子文件路径创建File对象
1.3.2 路径使用

路径中的每级目录之间用一个路径分隔符隔开。
路径分隔符和系统有关:
windows和DOS系统默认使用“\”来表示
UNIX和URL使用“/”来表示
Java程序支持跨平台运行,因此路径分隔符要慎用。
为了解决这个隐患,File类提供了一个常量:public static final String separator。根据操作系统,动态的提供分隔符
举例:
File file1 = new File(“d:\shangyun\info.txt”);
File file2 = new File(“d:” + File.separator + " shangyun " + File.separator + “info.txt”);
File file3 = new File("d:/ shangyun ");
1.3.3 练习 : 复制目录
复制文件夹
1.3.3.1 思路

  •  1 文件复制 : 本质就是输入和输出
    
  •  		a 完成文件输入
    
  •  		b 完成文件输出
    
  •  		c 整合输入和输出 完成文件复制
    
  •  2 获取目录下所有子目录
    
  •  		a 获取目录对象
    
  •  		b 获取目录下所有直接子目录
    
  •  		c 获取目录下所有后代目录(子 : 父子关系,后代 : 长辈关系,比如爷爷和孙子属于后代不属于子)
    
  •  3 整合所有后代目录,和文件复制
    
  •  		a 获取所有后代目录后,得到每一个后代文件对象
    
  •  	    b 通过文件对象可以获取文件的全路径
    
  •  		c 通过全路径,就可以创建输入流
    
  •  		d 然后创建输出流输出
    

一 完成后,封装。高内聚,低耦合。
快速判断入参出参方法 字面量一般作为你的入参。 打印到控制台的一般作为出参。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值