通过调用 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/