File类是Java.io包中用来操作文件的类,通过调用File类的方法,可实现创建、删除、重命名文件等功能。使用File类的对象可以获取文件的基本信息,如文件所在目录、文件名、文件大小、文件的修改时间等。
一、创建文件对象
- File(String pathname)
File file = new File("C:/java.text");
- File(String parent, String Child)
File file = new File("C:/demo/", "java.text");
- File(File f, String Child)
File folder = new File("C:/demo/");
File file = new File(folder , "java.text");
二,File的使用
1、文件操作
文件操作 | 返回值 | 说明 |
---|---|---|
exists() | boolean | 判断文件(夹)是否存在 |
createNewFile() | boolean | 当前文件不存在时创建一个新的空文件 |
isFile() | boolean | 判断是否为文件 |
canReaed() | boolean | 判断文件是否可读取 |
canWrite() | boolean | 判断文件是否可写入 |
canExecute() | boolean | 判断文件是否可通过其抽象名称执行 |
delete() | boolean | 删除指定文件(夹) |
getAbsoluteFile() | File | 返回抽象路径名的绝对路径名形式 |
getAbsolutePath() | String | 返回文件的绝对路径 |
getName() | String | 获取文件(夹)的名称 |
getParent() | String | 获取文件的父路径 |
getPath() | String | 获取路径名 |
getFreeSpace() | long | 返回抽象路径名指定分区中未分配的字节数 |
getTotalSpace() | long | 返回抽象路径名指定分区的大小 |
length() | long | 获取文件的长度(字节单位) |
isHidden() | boolean | 判断文件是否是隐藏文件 |
lastModified() | long | 获取文件最后修改时间 |
renameTo() | boolean | 文件重命名 |
setLastModified(long time) | boolean | 设置文件(夹)的最后一次修改时间 |
setReadOnly() | boolean | 将文件或文件夹设置为只读 |
2、文件夹操作
方法 | 返回值 | 说明 |
---|---|---|
isDirectoty() | boolean | 判断是不是文件夹 |
list() | String[] | 返回字符串数组 这些字符串指定此抽象路径名表示目录中的文件和目录 |
list(FilenameFilter filter) | String[] | 返回字符串数组 这些字符串指定此抽象路径名表示目录中满足指定过滤器的文件和目录 |
listFiles() | File[] | 返回抽象路径名数组 这些路径名表示此抽象路径名表示目录中的文件 |
listFiles(Fileter filter) | File[] | 返回抽象路径名数组 这些路径名表示此抽象路径名表示目录中的满足指定过滤器的文件和目录 |
listFiles(FilenameFilter filter) | File[] | 返回抽象路径名数组 这些路径名表示此抽象路径名表示目录中的满足指定过滤器的文件和目录 |
mkdir() | boolean | 创建此抽象路径名指定的目录 |
mkdirs() | boolean | 创建此抽象路径名指定的目录,包括所有必需但不存在 的目录 |
三、代码实践
package Filedemo;
import java.io.File;
import java.io.IOException;
/**
@author HCY
@date 2022/2/23 22:29
@version V1.0
**/
class FileDemo {
public static void main(String[] args) throws IOException {
File file = new File("src/abc.txt");
//如果文件不存在,则创建文件
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
} else {
//判断文件的属性,都会返回boolean类型的值
file.canExecute();
file.canRead();
file.canWrite();
//判断当前文件是否存在
System.out.println(file.exists());
//该文件是一个标准文件且可读
if(file.isFile() && file.canRead()){
//获取文件的名称
System.out.println(file.getName());
//获取文件的绝对路径
System.out.println(file.getAbsolutePath());
//获取文件的父路径名称,如果文件的路径中只包含文件名称,则显示空
System.out.println(file.getParent());
//返回文件绝对路径的规范格式
System.out.println(file.getCanonicalPath());
//返回操作系统的文件分割符
System.out.println(File.separator);
}
}
//无论当前文件是否存在,只要给定具体的路径,都可以返回相应的路径名称
File file2 = new File("c:/a/b/c");
System.out.println(file2.getAbsolutePath());
//判断文件是否是文件或者目录
System.out.println(file2.isDirectory());
System.out.println(file2.isFile());
//list打印地址,listFiles打印文件夹名称
String[] list = file2.list();
for(String str:list){
System.out.println(list.toString());
}
System.out.println("---------------");
File[] files = file2.listFiles();
for(File f : files){
System.out.println(f);
}
//打印当前文件系统的所有盘符
File[] files1 = File.listRoots();
for(int i = 0;i<files1.length;i++){
System.out.println(files1[i]);
}
//创建单级目录
file2.mkdir();
//创建多级目录
file2.mkdirs();
//循环遍历输出C盘中的所有文件的绝对路径
//使用递归的方式
printFile(new File("D:\\Github\\javase"));
}
/**
*
* 文件在遍历的时候,会出现空指针的问题,原因在于当前文件系统受保护,某些文件没有访问权限,此时会报空指针异常
* @param file
*/
public static void printFile(File file){
if(file.isDirectory()){
File[] files = file.listFiles();
for(File f:files){
printFile(f);
}
}else{
System.out.println(file.getAbsolutePath());
}
}
}