File类
File类的每一个实例可以表示硬盘(文件系统)中的一个文件或目录(实际上表示的是一个抽象路径)
使用File可以做到:
1.访问其表示的文件或目录的属性信息,例如:名字、大小、修改时间等等
2.创建和删除文件或目录
3.访问一个目录中的子项
但是File不能访问文件数据。
public class FileDemo {
public static void main(String[] args) {
// 使用FIle访问当前项目目录下的demo.txt文件
/*
创建File时要指定路径,而路径通常是相对路径。
相对路径的好处在于有良好的跨平台性。
“./”是相对路径中使用的最多的,表示“当前目录”,而当前目录是哪里
取决于程勋的运行环境而定,在idea中运行java程序时,这里的指定的
当前目录就是当前程序所在的项目目录。
*/
File file = new File("demo.txt");
// 获取名字
String name = file.getName();
System.out.println(name);
// 获取文件大小(字节)
long length = file.length();
System.out.println(length + "字节");
// 是否可读写
boolean cr = file.canRead();
boolean cw = file.canWrite();
System.out.println("是否可读:" + cr);
System.out.println("是否可写:" + cw);
// 是否隐藏
boolean ih = file.isHidden();
System.out.println("是否隐藏:" + ih);
}
}
创建新文件
createNewFile()可以创建一个文件。
public class CreateNewFileDemo {
public static void main(String[] args) {
// 在当前目录下创建一个文件test.txt
File file = new File("./test.txt");
// boolean exists()判断当前File表示的位置是否已存在该文件或目录
if (file.exists()) {
System.out.println("该文件已存在!");
} else {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("文件已创建!");
}
}
}
创建目录
mkDir():创建当前File表示的目录
mkDirs():创建当前File表示的目录,同时将所有不存在的父目录一同创建
public class MkDirDemo {
public static void main(String[] args) {
File dir = new File("./a/b/c/d");
if (dir.exists()) {
System.out.println("该目录已存在!");
} else {
dir.mkdirs();
System.out.println("目录已创建");
}
}
}
删除目录
delete()方法可以删除一个目录,但是只能删除空目录。
public class DeleteFileDemo {
public static void main(String[] args) {
// 将当前目录下的demo目录删除
File dir = new File("demo");
if (dir.exists()) {
dir.delete();
System.out.println("目录已删除");
} else {
System.out.println("目录不存在");
}
}
}
访问一个目录中的所有子项
listFiles()方法可以访问一个目录中的所有子项
public class ListFileDemo1{
public static void main(String[] args) {
File file = new File(".");
/*
boolean isFile()
判断当前File表示的是否为一个文件
boolean isDirectory()
判断当前File表示的是否为一个目录
*/
if (file.isDirectory()) {
/*
File[] listFiles()
将当前目录中的所有子项返回。返回的数组中每个File实例表示其中的一个子项
*/
File[] subs = file.listFiles();
System.out.println(String.format("当前目录包含【%d】个子项", subs.length));
for (int i = 0; i < subs.length; i++) {
File sub = subs[i];
System.out.println(sub.getName());
}
}
}
}
获取目录中符合特定条件的子项
重载的listFiles方法:File[] listFiles(FileFilter)
该方法要求传入一个文件过滤器,并仅将满足该过滤器要求的子项返回。
public class ListFileDemo2 {
public static void main(String[] args) {
/*
获取当前目录,以“.”开头
*/
File dir = new File(".");
if (dir.isDirectory()) {
File[] files = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
return file.getName().startsWith(".");
}
});
System.out.println(files.length);
}
}
}
本文详细介绍了Java中File类的使用,包括如何创建、访问和删除文件及目录。通过示例代码展示了File对象如何获取文件属性、创建新文件、创建目录、删除目录以及列出目录中的子项。此外,还演示了如何根据特定条件筛选目录中的文件。
2679

被折叠的 条评论
为什么被折叠?



