Искам да създам папки с публично разрешение за четене/запис. Това ще трябва да се изпълнява на Unix по-късно, поради което добавих Posix кода, но в момента разработвам на Windows.
Кодът по-долу се опитва да създаде файл, който има разрешение за запис, използвайки f.setWriteable(). Въпреки това кодът извежда:
"създаване на файл, който може да се записва false readable true"
Директорията се създава, но без разрешение за запис. , тъй като булевата проверка за записване е фалшива, резултатът от 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" );
}
}
}
}
}