认识File
在Java中,File
类是 java.io
包下的一个重要类,它代表了文件和目录路径名的抽象表示形式。File
类可以被用来创建、删除文件,重命名文件,查询文件属性,以及遍历目录树等。但是,值得注意的是,File
类本身并不直接处理文件的读写操作,它仅仅是一个路径名(文件名或目录名)的封装。文件的读写操作需要通过其他流(如 FileInputStream
、FileOutputStream
、FileReader
、FileWriter
等)来完成。
File类的常用构造方法(创建File类的对象)
File(String pathname)
:根据给定的路径名字符串创建新的File
实例。File(String parent, String child)
:根据父路径名字符串和子路径名字符串创建新的File
实例。File(File parent, String child)
:根据File
对象表示的父路径名和子路径名字符串创建新的File
实例。
File常见方法
exists()
-
功能:判断当前文件对象对应的文件路径是否存在。
-
返回值 :如果存在,返回
true
;否则返回false
。 -
示例代码:
File file = new File("example.txt");
boolean fileExists = file.exists();
if (fileExists) {
System.out.println("文件存在");
} else {
System.out.println("文件不存在");
}
isFile()
-
功能:判断当前文件对象指代的是否是文件(而非目录)。
-
返回值 :如果是文件,返回
true
;否则返回false
。 -
示例代码:
File file = new File("example.txt");
boolean isFile = file.isFile();
if (isFile) {
System.out.println("这是一个文件");
} else {
System.out.println("这不是一个文件");
}
isDirectory()
-
功能:判断当前文件对象指代的是否是目录(文件夹)。
-
返回值 :如果是目录,返回
true
;否则返回false
。 -
示例代码:
File dir = new File("docs");
boolean isDirectory = dir.isDirectory();
if (isDirectory) {
System.out.println("这是一个目录");
} else {
System.out.println("这不是一个目录");
}
getPath()
-
功能:获取创建文件对象时使用的路径。这通常是文件的相对路径,或者如果是用绝对路径创建的,则返回绝对路径。
-
返回值:文件的路径(String类型)。
-
示例代码:
File file = new File("/home/user/example.txt");
String filePath = file.getPath();
System.out.println("文件路径: " + filePath);
getName()
-
功能:获取文件的名称(包含后缀)。
-
返回值:文件的名称(String类型)。
-
示例代码:
File file = new File("/home/user/example.txt");
String fileName = file.getName();
System.out.println("文件名: " + fileName);
length()
-
功能:获取文件的大小,返回字节个数。
-
返回值:文件大小(long类型)。
-
示例代码:
File file = new File("example.txt");
long fileSize = file.length();
System.out.println("文件大小: " + fileSize + " 字节");
lastModified()
-
功能:获取文件的最后修改时间。
-
返回值:最后修改时间(自1970年1月1日00:00:00 GMT以来的毫秒数,long类型)。
-
示例代码:
File file = new File("example.txt");
long lastModifiedTime = file.lastModified();
System.out.println("最后修改时间: " + new Date(lastModifiedTime));
getAbsolutePath()
-
功能:获取文件的绝对路径。
-
返回值:文件的绝对路径(String类型)。
-
示例代码:
File file = new File("example.txt");
String absolutePath = file.getAbsolutePath();
System.out.println("绝对路径: " + absolutePath);
File类创建与删除文件的功能
1. createNewFile()
-
功能:创建一个新的空文件,当且仅当不存在具有此抽象路径名指定名称的文件时。
-
返回值 :如果文件被成功创建,则返回
true
;如果文件已经存在,则返回false
。 -
示例代码:
File file = new File("newFile.txt");
boolean isCreated = file.createNewFile();
if (isCreated) {
System.out.println("文件创建成功");
} else {
System.out.println("文件已存在");
}
2. mkdir()
-
功能:创建由此抽象路径名指定的目录。
-
返回值 :如果目录被成功创建,则返回
true
;如果目录已经存在,或者由于某种原因目录不能被创建,则返回false
。 -
注意:只能创建一级目录。
-
示例代码:
File dir = new File("newDir");
boolean isCreated = dir.mkdir();
if (isCreated) {
System.out.println("目录创建成功");
} else {
System.out.println("目录已存在或创建失败");
}
3. mkdirs()
-
功能:创建由此抽象路径名指定的目录,包括所有必需但不存在的父目录。
-
返回值 :如果目录被成功创建,则返回
true
;如果目录已经存在,或者由于某种原因目录不能被创建,则返回false
。 -
示例代码:
File dirs = new File("parentDir/childDir");
boolean isCreated = dirs.mkdirs();
if (isCreated) {
System.out.println("多级目录创建成功");
} else {
System.out.println("目录已存在或创建失败");
}
4. delete()
-
功能:删除由此抽象路径名表示的文件或目录。
-
返回值 :如果删除成功,则返回
true
;如果删除失败,则返回false
。 -
注意:默认只能删除文件和空目录。
-
示例代码:
File fileToDelete = new File("newFile.txt");
boolean isDeleted = fileToDelete.delete();
if (isDeleted) {
System.out.println("文件删除成功");
} else {
System.out.println("文件删除失败");
}
文件夹的遍历
list()
方法
list()
方法用于获取当前目录下所有的"一级文件名称",并将这些名称作为字符串数组返回。如果目录为空,则返回一个长度为0的数组。如果目录不存在或发生I/O错误,则返回null
。
示例代码:
import java.io.File;
public class FileExample {
public static void main(String[] args) {
File directory = new File("/path/to/your/directory");
// 获取当前目录下所有文件和文件夹的名称
String[] fileNames = directory.list();
if (fileNames != null) {
for (String fileName : fileNames) {
System.out.println(fileName);
}
} else {
System.out.println("Directory does not exist or an I/O error occurred.");
}
}
}
listFiles()
方法
listFiles()
方法用于获取当前目录下所有"一级文件对象"到一个文件对象数组中去返回。与list()
方法不同,listFiles()
返回的是File
对象,而不是字符串名称。这允许你进一步操作这些文件或文件夹,如读取、写入、删除等。
import java.io.File;
public class FileExample {
public static void main(String[] args) {
File directory = new File("/path/to/your/directory");
// 获取当前目录下所有文件和文件夹的File对象
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
// 这里可以进一步操作file对象,比如打印文件路径
System.out.println(file.getPath());
// 检查是文件还是文件夹
if (file.isDirectory()) {
System.out.println(file.getName() + " is a directory.");
} else {
System.out.println(file.getName() + " is a file.");
}
}
} else {
System.out.println("Directory does not exist or an I/O error occurred.");
}
}
}
注意事项
- 当
listFiles()
方法的主调对象不是一个目录,或者路径不存在时,它会返回null
。 - 当主调对象是一个空目录时,
listFiles()
会返回一个长度为0的数组。 listFiles()
会返回目录中的所有一级文件和文件夹,包括隐藏文件(如果操作系统允许访问它们)。- 如果没有权限访问某个目录,
listFiles()
同样会返回null
。