2
我很困惑......根據this Java pageFile.setReadOnly()
函數現在是一個「遺留」函數,應該被Files.setAttribute()
替換...但這需要你知道無論您是使用DOS還是POSIX文件系統。我只想以獨立於平臺的方式創建一個只讀文件。我應該怎麼做?在java.nio2中設置一個只讀路徑的正確方法
我很困惑......根據this Java pageFile.setReadOnly()
函數現在是一個「遺留」函數,應該被Files.setAttribute()
替換...但這需要你知道無論您是使用DOS還是POSIX文件系統。我只想以獨立於平臺的方式創建一個只讀文件。我應該怎麼做?在java.nio2中設置一個只讀路徑的正確方法
我相信Oracle只是根據新的java.nio.file API將它們稱爲「遺留」。如果他們真的想阻止它的使用,他們會棄用這些方法。
但是,如果你仍然想使用NIO2,說爲統一起見,你可以查詢平臺對DOS或POSIX屬性支持基本FileStore
。
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
還有FileAttributeView
類可以用來輕鬆更新多個屬性。
DosFileAttributeView attrs =
Files.getFileAttributeView(
file, DosFileAttributeView.class);
attrs.setSystem(true);
attrs.setHidden(true);
attrs.setReadOnly(true);