在访问文件属性之前,需要确保文件系统支持你所使用的属性视图。NIO.2 中可以获取文件系统所支持的属性视图名称列表,也可以通过 FileStore 类来检验文件存储是否支持某个属性视图。
通过调用 FileSystems.getDefault() 可得到当前的默认文件系统,调用 FileSystem.supportedFileAttributeViews() 方法可得到文件系统支持的属性视图列表,例如:
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.util.Set;
…
FileSystem fs = FileSystems.getDefault();
Set views = fs.supportedFileAttributeViews();
for (String view : views) {
System.out.println(view);
}
在 Windows 7 系统下,上面的代码将会打印:
acl
basic
owner
user
dos
注意,basic 支持任何文件系统,因此在任何文件系统下运行,至少要打印出 basic。
也可以调用 FileStore.supportsFileAttributeView() 方法来判断文件存储是否支持某个属性视图,这个方法可传入 String 类型或 Class 类型。下面的例子演示了如何判断所有的文件存储是否都支持 basic 视图:
import java.nio.file.FileStore;
import java.nio.file.FileSystem;
import java.nio.file.FileSystems;
import java.nio.file.attribute.BasicFileAttributeView;
…
FileSystem fs = FileSystems.getDefault();
for (FileStore store : fs.getFileStores()) {
boolean supported = store.supportsFileAttributeView(BasicFileAttributeView.class);
System.out.println(store.name() + " ---" + supported);
}
你也可以使用下面的代码得到 BNP.txt 文件所在的文件存储是否支持 basic 视图:
import java.io.IOException;
import java.nio.file.FileStore;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
…
Path path = Paths.get("C:/rafaelnadal/tournaments/2009", "BNP.txt");
try {
FileStore store = Files.getFileStore(path);
boolean supported = store.supportsFileAttributeView("basic");
System.out.println(store.name() + " ---" + supported);
} catch (IOException e) {
System.err.println(e);
}
文章来源:
http://www.aptusource.org/2014/03/nio-2-view-supported-by-file-system/
分享到:
相关推荐
在Java的NIO.2(New IO 2.0)框架中,文件系统API提供了更加高效和灵活的方式来处理文件和目录。本篇我们将深入探讨NIO.2中的几个关键概念和类,包括`Files`, `Path`, `FileAttributes`, `DirectoryWatcher`以及`...
Java NIO支持多种类型的通道,包括文件通道(FileChannel)、套接字通道(SocketChannel)和服务器套接字通道(ServerSocketChannel)等。通道可以同时进行读写操作,并且可以实现异步读写。 2. **缓冲区(Buffers...
Java I/O, NIO, and NIO.2 is a power-packed book that accelerates your mastery of Java's various I/O APIs. In this book, you'll learn about classic I/O APIs (File, RandomAccessFile, the stream classes ...
NIO.2还包含了许多其他的API扩展和改进,例如对符号链接的支持、文件属性访问、文件树遍历、WatchService等。 以上介绍了Java中的三种I/O机制。在实际开发中,它们各有适用场景。例如,Java IO适合进行传统的I/O...
根据提供的文件信息,“Pro Java 7 NIO.2.pdf”由Anghel Leonard于2011年编写,主要介绍了Java 7中的新输入/输出(NIO)API,特别是NIO.2(JSR 203)所带来的增强功能。这本书通过一系列章节详细讲解了如何使用NIO.2...
Java NIO(New Input/Output)是Java标准库中提供的一种I/O模型,与传统的BIO( Blocking I/O)相比,NIO具有更好的性能和更高的灵活性。NIO的核心组件包括通道(Channel)、缓冲区(Buffer)和选择器(Selector)。...
New I/O (NIO), and NIO.2 categories. You learn what each category offers in terms of its capabilities, and you also learn about concepts such as paths and Direct Memory Access. Chapters 2 through 5 ...
综上所述,Java NIO 和 NIO.2 提供了强大的工具和机制,使得开发者能够构建高并发、低延迟的系统。通过学习这两部分的内容,开发者可以更好地理解和利用Java平台提供的I/O能力,优化应用程序的性能。
`java.nio.file`库的引入使得Java在文件操作方面有了质的飞跃,它简化了API,提高了性能,并提供了更多现代文件系统所需的功能。无论是处理小文件还是大文件,无论是单线程还是多线程环境,`java.nio.file`都能提供...
NIO.2,又称为New I/O 2或Java NIO 2,是在Java 7中引入的进一步扩展,主要增加了文件系统操作的支持,包括异步I/O操作、文件通道、文件锁定以及对符号链接的支持。AsynchronousFileChannel是NIO.2中新增的异步I/O...
JDK1.7 之 java.nio.file.Files 读取文件仅需一行代码实现 java.nio.file.Files 类是 JDK1.7 中引入的新的文件操作类,该类包含了许多有用的方法来操作文件。其中,Files.readAllBytes(Path) 方法可以将整个文件...
java nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava nio.pdfjava ...
《Apress.Pro.Java.7.NIO.2.2011》这本书专注于讲解Java 7中的非阻塞I/O(Non-blocking I/O, NIO)和NIO 2的高级特性,是Java开发者深入理解这一关键领域的重要参考资料。NIO在Java平台中扮演着至关重要的角色,特别...
缓冲区则用于存储和传输数据,它是NIO的关键组件,具有容量、位置、限制等属性,并支持多种操作,如读写、反转、清除等。选择器允许单个线程同时监控多个通道,当某个通道准备进行读写操作时,选择器会通知我们,...
Java NIO.pdf nio教程 Java NIO.pdf nio教程 java nio
Pro Java 7 NIO.2 – PDF Books