文档

Java™ 教程-Java Tutorials 中文版
其他有用的方法
Trail: Essential Classes
Lesson: Basic I/O
Section: File I/O (Featuring NIO.2)

其他有用的方法

一些有用的方法不适用于本课程的其他地方,并在此处介绍。本节包括以下内容:

确定 MIME 类型

要确定文件的 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 方法。


Previous page: Watching a Directory for Changes
Next page: Legacy File I/O Code