[英]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.