序列化流与反序列化流、打印流

一、

向流中写入对象的操作流 ObjectOutputStream   称为 :序列硫化

向流中写入对象的操作流 ObjectInputStream  称为:反序列硫化

 

二、首先创建一个persoson对象

 

public class Person {
    private String name;
    private int age;

 

 

 

 

 

 出现这种错误:需要在person对象上加一个接口

 

public class Person implements Serializable{ //必须加一个implements 接口不然会报错
    private String name;
    private int age;
    public Person(String name, int age)
}

 

 

 

 

public class Person implements Serializable{
    private String name;
    public int age; //这个地方 private修改成public 后 会发生InvalidClassException异常

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

 

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

 

该类包含未知数据类型

 

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

不想该私有序列化有二种方式 用static 和transient 关键字;

private static int age;
private transient int age;

 三、打印流

①字节打印流使用关键字  PrintStream

②字符打印流使用关键字  PrintWriter

 PrintWriter pw=new PrintWriter(fw,true); true自动刷新 flase不刷新

四、 commons-IO 

在使用这个类之前需要先将 commons-io放入文件lib中 才能使用快捷方式

 

 

l 常用方法:

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

getName(String filename):获取文件名;

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

 

 

 

 

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

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

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

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

实例如下:

public class Demo03 {
    public static void main(String[] args) throws IOException {
        //获取文件扩展名
        String ext=FilenameUtils.getExtension("D:io1227\\print.txt");
        System.out.println(ext);
        //获取文件名
        String filename=FilenameUtils.getName("D:io1227\\print.txt");
        System.out.println(filename);
        //判断是否以。java结尾
        boolean b = FilenameUtils.isExtension("D:io1227\\print.txt", "java");
        System.out.println(b);
        //文件夹复制
        FileUtils.copyDirectoryToDirectory(new File("D:\\io1227"), new File("D:\\demo1227"));
        //文本复制
        FileUtils.copyFile(new File("D:\\io1227\\work.txt"), new File("D:\\io1227\\b\\work.txt"));
        //将内容写到文件中
        FileUtils.writeStringToFile(new File("D:\\io1227\\work.txt"), "我是程序员,我喜欢这个工作");
        //读取文件内容
        FileUtils.readFileToString(new File("D:\\io1227\\work.txt"));
    }
}

运行结果如下:

 

 欢迎各位大神留言 指点和评论;

posted @ 2020-04-24 17:24  丿狂奔的蜗牛  阅读(125)  评论(0编辑  收藏  举报