gpt4 book ai didi

java - 能够在没有权限的情况下删除文件

转载 作者:行者123 更新时间:2023-11-28 22:48:39 27 4
gpt4 key购买 nike

为什么我可以在 Java 代码中删除文件,尽管 Tomcat 用户没有删除权限?

我的服务器正在运行以下代码,它会删除并重新创建一个文件(如果存在):

File fileCSV = new File(filePath);
try {
if (fileCSV.exists()) {
fileCSV.delete();
}
fileCSV.createNewFile();
} catch (IOException ex) {
throw new FooImportException("Error creating new file");
}

尽管服务器使用的用户没有删除权限 - 只有读写权限,但它能够删除文件。

enter image description here

我确定这些是相关权限,因为代码在没有“创建文件/写入数据”权限的文件创建行上失败。但是,当缺少“删除”权限时,在删除行上不会失败这可能是什么原因?

最佳答案

根据JavaDocs for File#delete

public boolean delete()
Deletes the file or directory denoted by this abstract pathname. If this pathname denotes a directory, then the directory must be empty in order to be deleted.

Note that the Files class defines the delete method to throw an IOException when a file cannot be deleted. This is useful for error reporting and to diagnose why a file cannot be deleted.

Returns:
true if and only if the file or directory is successfully deleted; false otherwise
Throws:
SecurityException - If a security manager exists and its SecurityManager.checkDelete(java.lang.String) method denies delete access to the file

因此,当文件无法删除时,File#delete 实际上不会抛出 Exception,而是返回一个基于 boolean 的异常关于手术的成功。

如果 Exception 对您很重要,那么您应该使用 Files#delete相反。

重要的是要注意——这只解决了基于可用代码的“为什么它不会失败”的问题,而不是基于可用文件权限的“它会不会失败”的问题

关于java - 能够在没有权限的情况下删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47914579/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com