Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
一些有用的方法不适用于本课程的其他地方,并在此处介绍。本节包括以下内容:
要确定文件的 MIME 类型,你可能会发现 probeContentType(Path)
方法很有用。例如:
try { String type = Files.probeContentType(filename); if (type == null) { System.err.format("'%s' has an" + " unknown filetype.%n", filename); } else if (!type.equals("text/plain") { System.err.format("'%s' is not" + " a plain text file.%n", filename); continue; } } catch (IOException x) { System.err.println(x); }
请注意,如果无法确定内容类型,probeContentType
将返回 null。
此方法的实现具有高度平台特定性,并非绝对可靠。内容类型由平台的默认文件类型检测器确定。例如,如果检测器根据 .class
扩展名将文件的内容类型确定为 application/x-java
,则可能会被欺骗。
如果默认值不足以满足你的需要,你可以提供自定义 FileTypeDetector
。
示例使用 Email
probeContentType
方法。
要获取默认文件系统,请使用 getDefault
方法。通常,这个 FileSystems
方法(注意复数)被链接到 FileSystem
方法之一(注意单数),如下所示:
PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:*.*");
POSIX 文件系统的路径分隔符是正斜杠,/
,对于 Microsoft Windows,是反斜杠,\
。其他文件系统可能使用其他分隔符。要获取默认文件系统的 Path
分隔符,可以使用以下方法之一:
String separator = File.separator; String separator = FileSystems.getDefault().getSeparator();
getSeparator
方法还用于获取任何可用文件系统的路径分隔符。
文件系统具有一个或多个文件存储来保存其文件和目录。file store (文件存储) 表示底层存储设备。在 UNIX 操作系统中,每个安装的文件系统都由文件存储表示。在 Microsoft Windows 中,每个卷都由文件存储表示:C:
,D:
,依此类推。
要获取文件系统的所有文件存储列表,可以使用 getFileStores
方法。此方法返回 Iterable
,它允许你使用 enhanced for 语句迭代所有根目录。
for (FileStore store: FileSystems.getDefault().getFileStores()) { ... }
如果要检索特定文件所在的文件存储,请使用 Files
类中的 getFileStore
方法,如下所示:
Path file = ...; FileStore store= Files.getFileStore(file);
DiskUsage
示例使用 getFileStores
方法。