如何测试FILE是否存在且在D中是否可读

时间:2013-07-08 12:09:25

标签: file testing permissions d exists

如何确定D中的文件是否可读?我已经多次搜索谷歌和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);

1 个答案:

答案 0 :(得分:3)

为什么在http://www.dlang.org上有优秀的Phobos参考时使用Google搜索?

您寻求的是std.file.getAttributes()功能。