File类的方法及演示代码
基本概念:
- java.io.File类主要用于描述文件或目录路径的抽象表示信息,可以获取文件或目录的特征信息
常用方法:
方法 | 功能 |
---|
File(String pathname) | 根据参数指定的路径名来构造对象 |
File(String parent, String child) | 根据参数指定的父路径和子路径信息构造对象 |
File(File parent, String child) | 根据参数指定的父抽象路径和子路径信息构造对象 |
boolean exists() | 测试此抽象路径名表示的文件或目录是否存在 |
String getName() | 用于获取文件的名称 |
long length() | 返回由此抽象路径名表示的文件的长度 |
long lastModified() | 用于获取文件的最后一次修改时间 |
String getAbsolutePath() | 用于获取绝对路径信息 |
boolean delete() | 用于删除文件,当删除目录时要求是空目录 |
boolean createNewFile() | 用于创建新的空文件 |
boolean mkdir() | 用于创建目录 |
boolean mkdirs() | 用于创建多级目录 |
File[] listFiles() | 获取该目录下的所有内容 |
boolean isFile() | 判断是否为文件 |
boolean isDirectory() | 判断是否为目录 |
File[] listFiles(FileFilter filter) | 获取目录下满足筛选器的所有内容 |
演示代码:
创建文件并操作
public static void test1() throws IOException {
File f1 = new File("g:/a.txt");
if (f1.exists()) {
String name = f1.getName();
System.out.println("文件名称为" + name);
long length = f1.length();
System.out.println("文件的大小为" + length);
long l = f1.lastModified();
Date date = new Date(l);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String format = sdf.format(date);
System.out.println("最后一次修改文件的时间为" + format);
String absolutePath = f1.getAbsolutePath();
System.out.println("文件的绝对路径为" + absolutePath);
System.out.println(f1.delete()?"文件删除成功" : "文件删除失败");
} else {
System.out.println(f1.createNewFile()?"文件创建成功" : "文件创建失败");
}
}
单层目录的创建并删除操作
public static void test2() {
File file = new File("g:/mu");
if (file.exists()) {
System.out.println("目录名称为" + file.getName());
System.out.println(file.delete()?"目录删除成功" : "目录删除失败");
} else {
System.out.println(file.mkdir()?"目录创建成功" : "目录创建失败");
}
}
多层目录的创建并删除操作
public static void test3() {
File file = new File("g:/mu/yan/dong");
if (file.exists()) {
System.out.println("目录名称为" + file.getName());
System.out.println(file.delete()?"目录删除成功" : "目录删除失败");
} else {
System.out.println(file.mkdirs()?"目录创建成功" : "目录创建失败");
}
}
获取单个目录下的内容(不包括子目录下的内容)
public static void test4() {
File file = new File("g:/mu");
File[] files = file.listFiles();
for (File f : files) {
if (f.isFile()) {
System.out.println(f.getName());
}
if (f.isDirectory()) {
System.out.println("[" + f.getName() + "]");
}
}
}
获取内容的同时进行过滤(如指定后缀名的文件)
public static void test5() {
FileFilter fileFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".txt");
}
};
FileFilter fileFilter2 = (File pathname) -> {return pathname.getName().endsWith(".doc");};
File file = new File("g:/mu");
File[] files = file.listFiles(fileFilter2);
for (File file1 : files) {
System.out.println(file1.getName());
}
}
采用递归思想获取目录及其子目录中的文件
public static void show(File file) {
File[] files = file.listFiles();
for (File f : files) {
if (f.isFile()) {
System.out.println(f.getName());
}
if (f.isDirectory()) {
System.out.println("[" + f.getName() + "]");
show(f);
}
}
}
多层文件的删除操作 慎用,该删除不进回收站,直接删除
public static boolean deleteDirectory(String sPath) {
if (!sPath.endsWith(File.separator)) {
sPath = sPath + File.separator;
}
File dirFile = new File(sPath);
if (!dirFile.exists() || !dirFile.isDirectory()) {
return false;
}
boolean flag = true;
File[] files = dirFile.listFiles();
if (files != null) {
for (File ff : files) {
if (ff.isFile()) {
flag = ff.delete();
System.out.println(ff.getName() + "删除成功");
if (!flag) {
break;
}
} else {
flag = deleteDirectory(ff.getAbsolutePath());
if (!flag) {
break;
}
}
}
}
if (!flag) {
return false;
}
System.out.println(dirFile.getName() + "删除成功");
return dirFile.delete();
}
完整代码如下:
package file;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FileTest {
public static void test1() throws IOException {
File f1 = new File("g:/a.txt");
if (f1.exists()) {
String name = f1.getName();
System.out.println("文件名称为" + name);
long length = f1.length();
System.out.println("文件的大小为" + length);
long l = f1.lastModified();
Date date = new Date(l);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String format = sdf.format(date);
System.out.println("最后一次修改文件的时间为" + format);
String absolutePath = f1.getAbsolutePath();
System.out.println("文件的绝对路径为" + absolutePath);
System.out.println(f1.delete()?"文件删除成功" : "文件删除失败");
} else {
System.out.println(f1.createNewFile()?"文件创建成功" : "文件创建失败");
}
}
public static void test2() {
File file = new File("g:/mu");
if (file.exists()) {
System.out.println("目录名称为" + file.getName());
System.out.println(file.delete()?"目录删除成功" : "目录删除失败");
} else {
System.out.println(file.mkdir()?"目录创建成功" : "目录创建失败");
}
}
public static void test3() {
File file = new File("g:/mu/yan/dong");
if (file.exists()) {
System.out.println("目录名称为" + file.getName());
System.out.println(file.delete()?"目录删除成功" : "目录删除失败");
} else {
System.out.println(file.mkdirs()?"目录创建成功" : "目录创建失败");
}
}
public static void test4() {
File file = new File("g:/mu");
File[] files = file.listFiles();
for (File f : files) {
if (f.isFile()) {
System.out.println(f.getName());
}
if (f.isDirectory()) {
System.out.println("[" + f.getName() + "]");
}
}
}
public static void test5() {
FileFilter fileFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".txt");
}
};
FileFilter fileFilter2 = (File pathname) -> {return pathname.getName().endsWith(".doc");};
File file = new File("g:/mu");
File[] files = file.listFiles(fileFilter2);
for (File file1 : files) {
System.out.println(file1.getName());
}
}
public static void show(File file) {
File[] files = file.listFiles();
for (File f : files) {
if (f.isFile()) {
System.out.println(f.getName());
}
if (f.isDirectory()) {
System.out.println("[" + f.getName() + "]");
show(f);
}
}
}
public static boolean deleteDirectory(String sPath) {
if (!sPath.endsWith(File.separator)) {
sPath = sPath + File.separator;
}
File dirFile = new File(sPath);
if (!dirFile.exists() || !dirFile.isDirectory()) {
return false;
}
boolean flag = true;
File[] files = dirFile.listFiles();
if (files != null) {
for (File ff : files) {
if (ff.isFile()) {
flag = ff.delete();
System.out.println(ff.getName() + "删除成功");
if (!flag) {
break;
}
} else {
flag = deleteDirectory(ff.getAbsolutePath());
if (!flag) {
break;
}
}
}
}
if (!flag) {
return false;
}
System.out.println(dirFile.getName() + "删除成功");
return dirFile.delete();
}
public static void main(String[] args) {
}
}