File类与序列化

Posted 非凡起航

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了File类与序列化相关的知识,希望对你有一定的参考价值。

一、File类方法

1.与文件、目录名相关方法

String getName() 返回由此抽象路径名表示的文件或目录的名称。

String getPath() 将此抽象路径名转换为一个路径名字符串。

String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。

File getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。

String getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。

boolean renameTo(File dest) 重新命名此抽象路径名表示的文件。

2.与目录访问相关方法

boolean mkdir() 创建此抽象路径名指定的目录。
boolean mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

String[] list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
String[] list(FilenameFilter filter) 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。

3.与文件、目录常规信息相关方法

long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。
long length() 返回由此抽象路径名表示的文件的长度。

boolean delete() 删除此抽象路径名表示的文件或目录。

4.与文件、目录检测相关方法

boolean equals(Object obj) 测试此抽象路径名与给定对象是否相等。
boolean exists() 测试此抽象路径名表示的文件或目录是否存在。
boolean isAbsolute() 测试此抽象路径名是否为绝对路径名。
boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。
boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。
boolean isHidden() 测试此抽象路径名指定的文件是否是一个隐藏文件。

二、序列化

IO流:包装字节流就是个标准的序列化案例。

//序列化
        FileOutputStream fos = null;
        BufferedOutputStream bos = null;
        ObjectOutputStream oos = null;
        
        try {
            fos = new FileOutputStream(args[0]);
            bos = new BufferedOutputStream(fos);
            oos = new ObjectOutputStream(bos);
            
            Integer num = 1;
            oos.writeObject(num);

            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(oos!=null){
                try {
                    oos.close();
                } catch (IOException e) {
                }
            }
        }   

 

        //反序列化
        FileInputStream fis = null;
        ObjectInputStream ois = null;
        
        try {
            fis = new FileInputStream(args[0]);
            ois = new ObjectInputStream(fis);
            
            Integer num= (Integer)ois.readObject();
            System.out.println(num);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(ois!=null){
                try {
                    ois.close();
                } catch (IOException e) {
                }
            }
        }        

定义规则:

1.当对象被序列化时,JVM只序列化其字段值,方法和构造器不参与序列化。

2.如果对象的某个字段引用了另一个对象,则被引用对象的字段也将被序列化。

3.有些对象类(如FileInputStream)是不可序列化的,因为字段值与操作系统相关的即时信息。

4.访问控制修饰符对序列化无影响。

5.静态变量不参与序列化,因为它不属于对象。

 注意:当对象被反序列化时,静态变量的值被设为存储在相应类变量的值。

 

以上是关于File类与序列化的主要内容,如果未能解决你的问题,请参考以下文章

阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_3_对象的反序列化流_ObjectInputStream

阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_2_对象的序列化流_ObjectOutputStream

阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_4_transient关键字_瞬态关键字

阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_5_InputStreamReader介绍&代码实现

阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_4_OutputStreamWriter介绍&代码实现

PHP常用代码片段