[Day25]IO(Properties、序列化流、打印流、Commons-IO)

1.Properties类-持久的属性集,可保存在流中或从流中加载,属性列表中每个键及其对应值都是一个字符串

  1.1 特点

  (1)Hashtable的子类,map集合中的方法都可以用  

  (2)该集合没有泛型,键值都是字符串

  (3)是一个可以持久化等呃属性集。键值可以存储到集合中,也可以存储到持久化的设备,键值的来源也可以是持久化的设备  

  (4)有和流技术相结合的方法

    void load(InputStream inStream)  把指定流所对应的文件中的数据,读取出来,保存到Properties集合中

    void load(Reader reader)   

    void store(OutputStream out,String comments)  把集合中的数据,保存到指定的流所对应的文件中,参数commonts代表对描述信息

    void store(Writer writer,String comments)  

2.序列化流与反序列化流

  2.1 对象序列化流ObjectOutputStream-将Java对象的基本数据类型和图形写入OutputStream,使用OutputStream读取对象,通过在流中使用文件可以实现对象的持久储存

  (1)构造方法

    ObjectOutputStream(OutputStream out)-创建写入指定OutputStream的ObjectOutputStream  

  (2)方法

    void  writeObject(Object)-将指定的对象写入ObjectOutputStream

  2.2 对象反序列化流ObjectInputStream-ObjectInputStream对以前使用ObjectOutputStream写入的基本数据和对象进行反序列化,支持java.io.Serializable接口的对象才能从流读取

  (1)构造方法

    ObjectInputStream(InputStream in)-创建从指定InputStream读取的ObjectInputStream

  (2)方法

    void  readObject()-从ObjectInputStream读取对象

  2.3 序列化接口-当一个对象要能被序列化,这个对象所属的类必须实现Serializable接口。

  (1)若不识闲Serializable接,会发生异常NotSerializableException异常

  (2)当反序列化对象时,如果对象所属的class文件在序列化之后进行的修改,那么进行反序列化也会发生异常InvalidClassException。发生这个异常的原因如下:

    | 该类的序列版本号与从流中读取的类描述符的版本号不匹配

    l  该类包含未知数据类型

    l 该类没有可访问的无参数构造方法

  (3)Serializable标记接口。该接口给需要序列化的类,提供了一个序列版本号。serialVersionUID. 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。

  2.4 瞬态关键字transient-当一个类的对象需要被序列化时,某些属性不需要被序列化,则可以用transient修饰

  (1)静态修饰也不会被序列化,因为序列化是把对象数据进行持久化存储,而静态的属于类加载时的数据,不会被序列化

3. 打印流-添加输出数据的功能,使它们能够方便地打印各种数据值表示形式

  3.1 分类

  (1)字节打印流 PrintStream

  (2)字符打印流 PrintWriter

  3.2 方法

  void print(String str): 输出任意类型的数据,

  void println(String str): 输出任意类型的数据,自动写入换行操作

  3.3 打印流完成数据自动刷新-可以通过构造方法,完成文件数据的自动刷新功能

  public PrintWriter(OutputStream out, boolean autoFlush)

  public PrintWriter(Writer out, boolean autoFlush)

4. commons-IO

  4.1 导入classpath-加入classpath的第三方jar包内的class文件才能在项目中使用

  4.2 FilenamUtils-这个工具类用来处理文件名

  getExtension(String path):获取文件的扩展名;

  getName():获取文件名;

  isExtension(String fileName,String ext):判断fileName是否是ext后缀名;

  4.3 FileUtils-提供文件操作(移动文件,读取文件,检查文件是否存在等)的方法

  readFileToString(File file):读取文件内容,并返回一个String;

  writeStringToFile(File file,String content):将内容content写入到file中;

  copyDirectoryToDirectory(File srcDir,File destDir);文件夹复制

  copyFile(File srcFile,File destFile);文件夹复制

原文地址:https://www.cnblogs.com/ERFishing/p/10786846.html