gpt4 book ai didi

java - 限制用户删除、重命名和修改Windows中使用Java创建的文件

转载 作者:行者123 更新时间:2023-11-30 06:48:51 24 4
gpt4 key购买 nike

我正在 Windows 中创建一个文件,并希望限制用户删除、重命名和修改所创建的文件。我使用下面的代码创建文件并授予只读权限。但是,用户可以修改创建的文件。

非常感谢。

public class checkFilePermission {

private static String path = "C:\\Users\\abc_user\\Desktop\\VI\\test123.txt";

public static void main(String[] args) {

checkPermissions(path);


}


public static void checkPermissions(String path){
File file = new File(path);
System.out.println(file.getPath());
if(file.canExecute()){
System.out.println("Executable file");
}
if(file.canRead()){
System.out.println("Readable file");
}
if(file.canWrite()){
System.out.println("Writeable file");
}

//We can set the permissions as well.

file.setExecutable(false);
file.setReadable(false);
file.setWritable(false);
//file.setReadOnly();

System.out.println("Exe = "+file.canExecute());
System.out.println("Read = "+file.canRead());
System.out.println("Wrt = "+file.canWrite());

}


}

最佳答案

我尝试了以下方法来限制用户删除、重命名和修改文件。请尝试同样的方法并使其发挥作用。提供权限后,我们必须撤销用户的权限

public static void Permissions(String path) throws IOException{
File file1 = new File(path);
System.out.println(file1.getPath());

if (file1.createNewFile()){
System.out.println("File is created!");
}else{
System.out.println("File already exists.");
}
//1. Using CACLS cmd
// Runtime.getRuntime().exec("CACLS myfile.txt /E /G hitesh_golhani:R" + path);

//2. Using file methods
// boolean a = file.setExecutable(true,true);
// boolean b = file.setReadable(true,true);
// boolean c = file.setWritable(true,true);
// file.setReadOnly();

//3. Using FilePermission
// SecurityManager sm = new SecurityManager();
// FilePermission fp1 = new FilePermission(path, "read");
// PermissionCollection pc = fp1.newPermissionCollection();
// pc.add(fp1);


//4. Using POSIX java 7
// Set perms = new HashSet();
// perms.add(PosixFilePermission.OWNER_READ);
// perms.add(PosixFilePermission.OWNER_WRITE);
// Files.setPosixFilePermissions(file.toPath(), perms);

/* //5. Using Path
Path file = Paths.get(path);
AclFileAttributeView aclAttr = Files.getFileAttributeView(file, AclFileAttributeView.class);
System.out.println("owner------"+aclAttr.getOwner());
for(AclEntry aclEntry : aclAttr.getAcl()){
System.out.println("entry----"+aclEntry);
}
System.out.println();

UserPrincipalLookupService upls = file.getFileSystem().getUserPrincipalLookupService();
UserPrincipal user = upls.lookupPrincipalByName(System.getProperty("hitesh_golhani"));
AclEntry.Builder builder = AclEntry.newBuilder();
builder.setPermissions( EnumSet.of(AclEntryPermission.READ_DATA, AclEntryPermission.EXECUTE,
AclEntryPermission.READ_ACL, AclEntryPermission.READ_ATTRIBUTES, AclEntryPermission.READ_NAMED_ATTRS,
AclEntryPermission.WRITE_ACL, AclEntryPermission.DELETE
));
builder.setPrincipal(user);
builder.setType(AclEntryType.ALLOW);
aclAttr.setAcl(Collections.singletonList(builder.build()));*/

System.out.println("Exe = "+file1.canExecute());
System.out.println("Read = "+file1.canRead());
System.out.println("Wrt = "+file1.canWrite());
}

关于java - 限制用户删除、重命名和修改Windows中使用Java创建的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43202388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com