我缺少一个函数std.file
来检查attributes()
成员是否DirEntry
意味着它可以被特定的用户 id 读取(默认为当前用户)。有人写过这样的逻辑吗?为什么标准库中没有这么常用的函数?
问问题
113 次
1 回答
4
我知道这样的函数不难写。
真的吗?我期待看到您的实现适用于 D 支持的所有系统。这包括对 Windows 和 Linux ACL 的支持,更不用说 SELinux 等安全软件了。
我相当确定检查打开文件是否成功的通用正确方法是尝试打开文件。如果您愿意接受一个近似值,并且只关心 Linux,则可以使用 Ceaccess
函数 - 但是,它不是 POSIX 的一部分,并且只能在 Linux 上运行。如果您的程序永远不会以 root 身份运行,您可以使用access
POSIX 的一部分。就个人而言,如果没有很好的理由,我不会走这条路。如果您担心性能(并且您希望有很多文件存在但由于某种原因不可读),您可以使用 C 函数(fopen
或 POSIXopen
),但是只有在分析实际上显示由异常处理引起的瓶颈时,我才会这样做。更不用说,你需要准备好抛出异常,正如上面和你之前关于这个主题的问题中所讨论的那样。
只需使用异常处理,除非您真的知道自己在做什么。
于 2013-09-22T18:33:54.397 回答