检查File / DirEntry是否可读

时间:2013-09-22 17:43:08

标签: d file-permissions

我在std.file中缺少一个函数,用于检查attributes()的{​​{1}}成员是否意味着它可被特定用户ID读取(默认为当前用户)。有没有人写过这样的逻辑?为什么标准库中没有这么常用的函数?

1 个答案:

答案 0 :(得分:4)

  

我知道这样的功能并不难写。

真的?我期待看到您的实现适用于D支持的所有系统。这包括对Windows和Linux ACL的支持,更不用说像SELinux这样的安全软件了。

我很确定检查打开文件是否成功的通用正确方法是尝试打开文件。如果您满足于近似,并且您只关心Linux,则可以使用C eaccess函数 - 但是,它不是POSIX的一部分,并且只能在Linux上运行。如果您的程序永远不会以root用户身份运行,则可以使用属于POSIX的access。就个人而言,如果没有充分理由,我不会走这条路。如果您担心性能(并且您希望有很多文件但由于某些原因而无法读取),您可以使用C函数(fopen或POSIX open),但是,如果分析实际上显示由异常处理引起的瓶颈,我只会这样做。更不用说,无论如何,你需要准备好抛出异常,正如上面和前一个关于这个主题的问题所讨论的那样。

只是使用异常处理,除非你真的知道自己在做什么。