是否有任何方法可以在java中创建无法删除的文件。 我用Google搜索并找到了涉及cmd的进程。 但是,我需要一种纯粹的“java”方式,可以在任何平台上完成。
提前致谢。
答案 0 :(得分:1)
感谢您的帮助。 我终于做对了。 我使用以下代码拒绝访问用户
public static void main() throws IOException
{
Path file = Paths.get("c:/b.txt");
AclFileAttributeView aclAttr = Files.getFileAttributeView(file, AclFileAttributeView.class);
//System.out.println();
UserPrincipalLookupService upls = file.getFileSystem().getUserPrincipalLookupService();
UserPrincipal user = upls.lookupPrincipalByName(System.getProperty("user.name"));
AclEntry.Builder builder = AclEntry.newBuilder();
builder.setPermissions(EnumSet.of(AclEntryPermission.APPEND_DATA, AclEntryPermission.DELETE, AclEntryPermission.DELETE_CHILD, AclEntryPermission.EXECUTE, AclEntryPermission.READ_ACL, AclEntryPermission.READ_ATTRIBUTES, AclEntryPermission.READ_DATA, AclEntryPermission.READ_NAMED_ATTRS, AclEntryPermission.SYNCHRONIZE, AclEntryPermission.WRITE_ACL, AclEntryPermission.WRITE_ATTRIBUTES, AclEntryPermission.WRITE_DATA, AclEntryPermission.WRITE_NAMED_ATTRS, AclEntryPermission.WRITE_OWNER));
builder.setPrincipal(user);
builder.setType(AclEntryType.DENY);
aclAttr.setAcl(Collections.singletonList(builder.build()));
}
答案 1 :(得分:0)
尝试方法setPosixFilePermissions()并将权限设置为只读用于所有类用户。请参阅此内容 - http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#setPosixFilePermissions%28java.nio.file.Path,%20java.util.Set%29
答案 2 :(得分:0)
如果您想创建一个不会被意外覆盖的文件,请查看以下各种答案:How do i programmatically change file permissions?
如果要创建当前程序根本无法删除的文件(但可以是特权程序),则可以通过在父目录上正确设置权限,或者使用SELinux强制访问控制聪明来实现。
如果你想创建一个真正不可删除的文件,那么你就不走运了。我不知道任何支持创建永远不能删除的文件的操作系统。这将是一个“反特征”。
我也同意@Teifi的评论。创建一个无法在用户的计算机上删除的文件是不可接受的...除非由系统管理员授权或由系统管理员授权。我会打电话给那些“恶意”的软件。
答案 3 :(得分:-1)
您可以使用java.nio.*
锁定文件。这是一个如何使用它的教程http://www.javabeat.net/2007/10/locking-files-using-java/。