簡體   English   中英

使用Java在文件創建時設置POSIX權限

[英]Setting POSIX permissions at file creation time in Java

有沒有一種方法可以使用給定的POSIX權限集創建文件?

一旦文件存在,就可以為該文件設置POSIX權限。 下面的代碼執行此操作。 但是,該代碼還有一個文件爭用,其中使用松散權限(CREATION)打開文件,然后我稍后將其鎖定(SECURED)。 在此之間可能有人修改了文件,從而導致了問題。 如何在創建時設置權限?

    Set<PosixFilePermission> perms = 
             EnumSet.of(PosixFilePermission.OWNER_READ, 
                        PosixFilePermission.OWNER_WRITE);       
    Path targetPath = dir.resolve(FILENAME);
    String contents = getContent();
    try {//  CREATION, race starts
        try (FileWriter fw = new FileWriter(tempPath.toFile())) {
            fw.append(contents);
        }
        //  SECURED, race ends
        Files.setPosixFilePermissions(tempPath, perms);
    ...

原來還有另一個POSIX接口: PosixFileAttributeView ,您可以將其傳遞給Files.createFile()

請參閱“ 設置初始權限 ”部分:

設置初始權限

 Implementations supporting this attribute view may also support setting the initial permissions when creating a file or directory. 

將下面的路徑傳遞給FileWriter會做正確的事情:

Path lockedFile = Files.createFile(tempPath,
                                  PosixFilePermissions.asFileAttribute(perms));
try (FileWriter fw = new FileWriter(lockedFile.toFile())) {
 ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM