Java创建Undeletable文件

时间:2013-03-20 13:33:42

标签: java file

是否有任何方法可以在java中创建无法删除的文件。 我用Google搜索并找到了涉及cmd的进程。 但是,我需要一种纯粹的“java”方式,可以在任何平台上完成。

提前致谢。

4 个答案:

答案 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/