这些Java教程是为JDK 8编写的。本页面描述的示例和实践未利用后续版本中引入的改进,并可能使用不再可用的技术。
有关Java SE 9及后续版本中更新的语言特性的摘要,请参阅Java语言更改。
有关所有JDK版本的新功能、增强功能以及已删除或弃用选项的信息,请参阅JDK发布说明。
这里介绍了一些在本课程中没有涉及到的有用的方法。本节内容包括以下内容:
要确定文件的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
方法。