[英]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.