2

如何确定文件在 D 中是否可读?我已经多次搜索了 google 和 D 的文档和资料——我也多次搜索了 SO——但我无法找到任何关于测试给定文件是否可读的内容。理论上,我知道如何在 C 中使用 __freadable 来做到这一点——我什至尝试在 D 中对 __freadable 进行外部调用,但出现以下链接错误:

ldc2  -O2 -dw -g -wi -I/usr/include/stdio_ext.h -c ket.d ket.o
ldc2  -O2 -dw -g -wi -I/usr/include/stdio_ext.h -ofket ket.o 
ket.o: In function `_Dmain':
/home/hav3lock/sy.l/repos/pub_rel/ket/ket.d:47: undefined reference to `_D3ket4mainFAAyaZv11__freadableUPOS4core4stdc5stdio6_iobufZi'
collect2: error: ld returned 1 exit status
Error: /usr/bin/gcc failed with status: 1
make: *** [ket] Error 1

我阅读了更多关于在 D 中调用 C 东西的内容,显然我需要重写 stdio_ext.h C 头文件——其中 __freadable 存在——作为 D 头文件或类似的东西,而且工作量超出了我正在尝试做的事情。

我只想确定给定文件是否可读,以便我可以一次性确定该文件是否存在以及它是否也可读。如果我用 bash 写这个傻瓜,我会用

[[ -r FILE ]] 

测试 FILE 是否存在并授予对它的读取权限,但我只是不知道如何在 D 中执行等效操作......有什么想法吗?


尝试使用 getAttributes,但 D 抱怨:

no property 'getAttributes' for type 'File'

这是我使用getAttributes的方式

    auto file_a = File(proc_auto[hdex], "r");
    writeln(file_a.getAttributes);
4

1 回答 1

3

当您在http://www.dlang.org上有出色的 Phobos 参考资料时,为什么还要使用谷歌搜索?

您寻求的是std.file.getAttributes()函数。

于 2013-07-08T13:40:46.990 回答