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のコメントにも同意します。ユーザーのマシン上で削除できないファイルを作成することは認められません...ただし、システム管理者によって、またはシステム管理者の許可を得て行われる場合を除きます。それを行うソフトウェアもすべて「悪意のある」と呼びます。