文档

Java™ 教程
隐藏目录
其他有用的方法
教程:Java基础类
课程:基本输入输出
章节:文件输入输出(使用NIO.2)

其他有用的方法

这里介绍了一些在本课程中没有涉及到的有用的方法。本节内容包括以下内容:

确定MIME类型

要确定文件的MIME类型,您可能会发现probeContentType(Path)方法很有用。例如:

try {
    String type = Files.probeContentType(filename);
    if (type == null) {
        System.err.format("'%s'的文件类型未知。%n", filename);
    } else if (!type.equals("text/plain") {
        System.err.format("'%s'不是纯文本文件。%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还可用于检索任何可用文件系统的路径分隔符。

文件系统的文件存储

文件系统有一个或多个文件存储来保存其文件和目录。 文件存储代表底层存储设备。 在UNIX操作系统中,每个挂载的文件系统都由一个文件存储表示。 在Microsoft Windows中,每个卷都由一个文件存储表示: C:D:等等。

要检索文件系统的所有文件存储的列表,可以使用getFileStores方法。 此方法返回一个Iterable,允许您使用增强的for语句遍历所有根目录。

for (FileStore store: FileSystems.getDefault().getFileStores()) {
   ...
}

如果您想要获取特定文件所在的文件存储,可以使用Files类中的getFileStore方法,如下所示:

Path file = ...;
FileStore store= Files.getFileStore(file);

DiskUsage示例使用了getFileStores方法。


上一页: 监视目录更改
下一页: 旧版文件I/O代码