我很困惑......根据这个Java页面,该File.setReadOnly()函数现在是一个"遗留"函数,应该被替换为Files.setAttribute()......但这需要您知道您是使用DOS还是POSIX文件系统.我只是想以独立于平台的方式使文件成为只读文件.我该怎么办?
我相信Oracle只是根据新的java.nio.file API 将它们称为"遗留" .如果他们真的想阻止它的使用,他们会弃用这些方法.
但是,如果你仍然想使用NIO2,说为统一起见,你可以查询平台的底层FileStore为DOS或POSIX属性支持.
Path file = Paths.get("file.txt");
// Files.createFile(file);
System.out.println(Files.isWritable(file)); // true
// Query file system
FileStore fileStore = Files.getFileStore(file);
if (fileStore.supportsFileAttributeView(DosFileAttributeView.class)) {
// Set read-only
Files.setAttribute(file, "dos:readonly", true);
} else if (fileStore.supportsFileAttributeView(PosixFileAttributeView.class)) {
// Change permissions
}
System.out.println(Files.isWritable(file)); // false
Run Code Online (Sandbox Code Playgroud)
还有FileAttributeView,你可以用它来轻松地更新多个属性类.
DosFileAttributeView attrs =
Files.getFileAttributeView(
file, DosFileAttributeView.class);
attrs.setSystem(true);
attrs.setHidden(true);
attrs.setReadOnly(true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1623 次 |
| 最近记录: |