一、基本概念
1、File类是文件路径或目录路径的抽象表示。
换言之,File类的实例(即File对象)可能指向或可能不指向文件系统中的真实文件。
2、File类是与操作系统无关的。
一个File对象,包括两个部分:前缀、字符串名,即“前缀+字符串名+前缀+字符串名…”。
(1) 不同的操作系统起始的前缀不一样,在windows中使用的是磁盘驱动器名加上":",如“C:\”,而UNIX中使用的是“/usr”。
Java虚拟机的运行目录是我们应用程序的起始目录,该目录可以通过系统属性user.dir获得,从而可以屏蔽该差异。(当然,如果你设置其他起始路径,如文件的上传路径,你也可以通过在配置文件中设置配置参数的方式来屏蔽该差异)
String workingDir = System.getProperty("user.dir");
(2) 不同的操作系统使用不同的字符来分隔路径名中的两个部分。例如,Windows在路径名中使用反斜杠(\)作为名称分隔符,而UNIX使用正斜杠(/)。
File类定义了一个名为分隔符的常量,它是系统相关的名称分隔符。我们可以使用File.separator常量来获取名称分隔符。
System.out.println(System.getProperty("user.dir")+ File.separator + "notes.txt");
(3) 使用File对象,我们可以创建新文件,删除现有文件,重命名文件,更改文件的权限等。
(4)File类中的isFile()和isDirectory()告诉File对象是否表示文件或目录。
二、使用示例
(1) 我们可以使用File类的以下构造函数之一创建一个文件:
File(String pathname)
File(File parent, String child)
File(String parent, String child)
File(URI uri)
例如:
File dummyFile = new File("test.txt");
名为test.txt的文件不必存在,以使用此语句创建File对象。
dummyFile对象表示抽象路径名,它可能指向或可能不指向文件系统中的真实文件。
(2) 检测文件的存在
我们可以使用File类的exists()方法检查File对象的抽象路径名是否存在。
boolean fileExists = dummyFile.exists();
import java.io.File;
public class FileDemo {
public static void main(String[] argv) {
//获取源程序目录地址
System.out.println(System.getProperty("user.dir")+ File.separator + "notes.txt");
// Create a File object
File dummyFile = new File("dummy.txt");
// Check for the file"s existence
boolean fileExists = dummyFile.exists();
if (fileExists) {
System.out.println("The dummy.txt file exists.");
} else {
System.out.println("The dummy.txt file does not exist.");
}
}
}
上面的代码生成以下结果。
D:\Java\DemoSource\notes.txt
The dummy.txt file does not exist.
(3)检测文件类型
isDirectory():Tests whether the file denoted by this abstract pathname is a directory.
isFile():Tests whether the file denoted by this abstract pathname is a normal file.
参考:
关于File对象的更多解释,javadoc中讲解的更为全面,英文不理解的用Google翻译(其他翻译不准确),链接如下。
java 8: https://docs.oracle.com/javase/8/docs/api/
其他参考:
w3cschool: https://www.w3cschool.cn/java/java-io-file.html