簡體   English   中英

使用Java創建具有公共讀取權限的目錄

[英]Create Directory with public read permissions in Java

我想創建具有公共讀/寫權限的文件夾。 這將要求稍后在Unix上運行,這就是為什么我添加了Posix代碼的原因,但是目前我正在Windows上進行開發。

下面的代碼嘗試使用f.setWriteable()創建具有寫權限的文件。 但是代碼輸出:

“創建可寫,錯誤,可讀,正確的文件”

目錄已創建,但沒有可寫權限。 ,因為可寫的布爾檢查為false,則為f.setWriteable的結果。

我可以在文件上執行setWriteable,沒有任何問題,但似乎無法在文件夾上執行。

如何使用合適的權限跨平台創建文件夾?

我認為這可能是由於我使用絕對路徑而不是相對路徑,但是無法找到有關此的信息。

import java.io.File;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermission;
import java.util.HashSet;
import java.util.Set;

public class FileTest
{
    public static void main( String[] args )
    {
        String path = "C:/home/1/";
        File f = new File( path );
        if ( !f.exists() )
        {

            boolean success = f.mkdirs();
            boolean writeable = f.setWritable( true, false );
            boolean readable = f.setReadable( true, false );
            System.out.println( "creating file that is writeable " + writeable + " readable " +
                readable );
            if ( !success )
            {
                System.out.println( "Folder Directory not found.{}" );
            }
            boolean isPosix = FileSystems.getDefault().supportedFileAttributeViews()
                .contains( "posix" );
            if ( isPosix )
            {
                // using PosixFilePermission to set file permissions
                Set<PosixFilePermission> perms = new HashSet<>();
                perms.add( PosixFilePermission.OWNER_READ );
                perms.add( PosixFilePermission.OWNER_WRITE );
                perms.add( PosixFilePermission.GROUP_READ );
                perms.add( PosixFilePermission.GROUP_WRITE );
                perms.add( PosixFilePermission.OTHERS_READ );
                perms.add( PosixFilePermission.OTHERS_WRITE );
                try
                {
                    Files.setPosixFilePermissions( Paths.get( path ), perms );
                    // if ( LOGGER.isDebugEnabled() )
                    // {
                    System.out.println( "Set Posix permissions" );
                    // }

                }
                catch ( IOException e )
                {
                    System.out.println( "Unable to set posix permissions" );
                }
            }
        }
    }
}

如果您使用的是Java7,那么也許這將是答案:
http://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileLock.html

暫無
暫無

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

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