File(文件和目录)
File类是java.io包下代表与平台无关的文件和目录的类。
在程序中操作文件和目录,都可以通过File类来完成。
需要注意的是,不管是文件还是目录都是使用File来操作的,
File能新建、删除、重命名文件和目录,
但是File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
常用方法
分类 | (修饰符)返回值 | 方法名 | 说明 |
访问名称与路径相关 | String | getName() | 返回由此抽象路径名表示的文件或目录的名称。 |
String | getPath() | 将此抽象路径名转换为一个路径名字符串。 | |
String | getParent() | 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。 | |
File | getParentFile() | 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null。 | |
File | getAbsoluteFile() | 返回此抽象路径名的绝对路径名形式。 | |
String | getAbsolutePath() | 返回此抽象路径名的绝对路径名字符串。 | |
检测相关方法 | boolean | exists() | 测试此抽象路径名表示的文件或目录是否存在。 |
boolean | canRead() | 测试应用程序是否可以读取此抽象路径名表示的文件。 | |
boolean | canWrite() | 测试应用程序是否可以修改此抽象路径名表示的文件。 | |
boolean | canExecute() | 测试应用程序是否可以执行此抽象路径名表示的文件。 | |
boolean | isHidden() | 测试此抽象路径名指定的文件是否是一个隐藏文件。 | |
boolean | isFile() | 测试此抽象路径名表示的文件是否是一个标准文件。 | |
boolean | isDirectory() | 测试此抽象路径名表示的文件是否是一个目录。 | |
boolean | isAbsolute() | 测试此抽象路径名是否为绝对路径名。 | |
获取文件信息 | long | length() | 返回由此抽象路径名表示的文件的长度。 |
long | lastModified() | 返回此抽象路径名表示的文件最后一次被修改的时间。 | |
操作相关 | boolean | createNewFile() | 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。 |
static File | createTempFile(String prefix, String suffix) | 在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。 | |
static File | createTempFile(String prefix, String suffix, File directory) | 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。 | |
boolean | delete() | 删除此抽象路径名表示的文件或目录。 | |
void | deleteOnExit() | 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。 | |
boolean | renameTo(File dest) | 重新命名此抽象路径名表示的文件。 | |
boolean | mkdir() | 创建此抽象路径名指定的目录。 | |
子文件/目录相关 | String[] | list() | 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。 |
String[] | list(FilenameFilter filter) | 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。 | |
File[] | listFiles() | 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录。 | |
File[] | listFiles(FileFilter filter) | 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 | |
File[] | listFiles(FilenameFilter filter) | 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 | |
static File[] | listRoots() | 列出可用的文件系统根。 |
序列化和反序列化
目的:把对象进行网络传输或存储
对象序列化的目标是将对象保存到磁盘中,或允许在网络中直接传输对象。
对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,
从而允许把这种二进制流持久地保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点。
其他程序一旦获得了这种二进制流(无论是从磁盘中获取的,还是通过网络获取的),
都可以将这种二进制流恢复成原来的Java对象。
序列化的含义和意义:
序列化机制允许将实现序列化的Java对象转换成字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以备以后重新恢复成原来的对象。
序列化机制使得对象可以脱离程序的运行而独立存在。
对象的序列化(Serialize)指将一个Java对象写入IO流中,
与此对应的是,对象的反序列化(Deserialize)则指从IO流中恢复该Java对象。
如果需要让某个对象支持序列化机制,则必须让它的类是可序列化的(serializable)。
为了让某个类是可序列化的,该类必须实现如下两个接口之一:
- Serializable(常用)
- Externalizable
public class Student implements Serializable { }
Java中很多类已经实现了Serializable,该接口是一个标记接口,实现该接口无须实现任何方法,它只是表明该类的实例是可序列化的。
所有可能在网络上传输的对象的类都应该是可序列化的,否则程序将会出现异常。
二、Properties类
读取
properties.load(new FileReader("D:\\Teaching\\2020Grad\\JavaSE\\Project\\2022JavaSeOne\\20220524\\src\\test.properties"));
添加&修改
properties.put("userName","zhangshan"); properties.put("userName","zs");
移除
properties.remove("userName");
获取key
String str2= properties.getProperty("userName","6");//后面有默认值,如果不要的话直接拿到字符串,要的话直接拿到自己设置的默认值 String str= properties.getProperty("name");//后面有默认值,如果不要的话直接拿到字符串
Properties 类是Java中操作配置文件的类