簡體   English   中英

Java創建不可刪除文件

[英]Java Create Undeletable File

是否有任何方法可以在Java中創建無法刪除的文件。 我已經用谷歌搜索,發現涉及cmd的進程。 但是,我需要可以在任何平台上完成的純“ java”方式。

提前致謝。

謝謝您的幫助。 我終於明白了。 我使用以下代碼拒絕訪問用戶

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()));
}

嘗試使用方法setPosixFilePermissions(),並將所有用戶類別的權限設置為只讀。 請參考-http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#setPosixFilePermissions%28java.nio.file.Path,%20java.util.Set%29

如果要創建一個不會被意外覆蓋的文件,請查看以下各種答案: 如何編程方式更改文件權限?

如果要創建一個當前程序根本無法刪除的文件(但是有特權的文件可以刪除),則可以通過在父目錄上適當設置權限或使用SELinux強制訪問控制的技巧來實現。

如果您要創建一個真正不可刪除的文件,那么您很不走運。 我不知道任何支持創建永不刪除的文件的操作系統。 這將是“反特征”。


我也同意@Teifi的評論。 創建無法在用戶計算機上刪除的文件是不可接受的...除非由系統管理員或在系統管理員的授權下完成。 我也稱做該軟件的任何軟件都是“惡意的”。

您可以使用java.nio.*鎖定文件。 這是http://www.javabeat.net/2007/10/locking-files-using-java/的使用方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM