【问题标题】:right way to set a Path to readonly in java.nio2在 java.nio2 中将路径设置为只读的正确方法
【发布时间】:2016-01-02 10:02:51
【问题描述】:

我很困惑...根据this Java pageFile.setReadOnly() 函数现在是“旧版”函数,应该替换为Files.setAttribute()...但这需要您知道您是否正在使用DOS 或 POSIX 文件系统。我只想以独立于平台的方式将文件设为只读。我该怎么做?

【问题讨论】:

    标签: java nio2


    【解决方案1】:

    我相信甲骨文只是根据新的 java.nio.file API 称它们为“遗留”。如果他们真的想阻止它的使用,他们就会弃用这些方法。

    但如果您仍然想使用 NIO2,比如说为了保持一致性,您可以查询平台的底层 FileStore 以获得 DOSPOSIX 属性支持。

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多