のメンバーが特定のユーザー ID (デフォルトで現在のユーザー) によって読み取り可能であることを意味するstd.file
かどうかをチェックする関数がありません。誰かがそのようなロジックを書いたことがありますか? そして、標準ライブラリでそれほど頻繁に使用される関数がないのはなぜですか?attributes()
DirEntry
1 に答える
そのような関数を書くのは難しくないことを私は知っています。
本当に?D がサポートするすべてのシステムで動作する実装を期待しています。これには、SELinux などのセキュリティ ソフトウェアは言うまでもなく、Windows および Linux ACL のサポートが含まれます。
ファイルを開くことが成功するかどうかを確認する普遍的な正しい方法は、ファイルを開こうとすることだと確信しています。概算で解決し、Linux だけに関心がある場合は、C 関数を使用できますがeaccess
、これは POSIX の一部ではなく、Linux でのみ機能します。プログラムがルートとして実行されない場合access
は、POSIX の一部である which を使用できます。個人的には、よほどの理由がなければ、この道をたどりません。パフォーマンスが心配な場合 (そして、そこにあるのに何らかの理由で読み取れないファイルがたくさんあると予想される場合)、C 関数 (fopen
または POSIXopen
)、ただし、プロファイリングが実際に例外処理によって引き起こされたボトルネックを表示する場合にのみこれを行います。言うまでもなく、上記およびこのトピックに関する以前の質問で説明したように、とにかく例外がスローされる準備ができている必要があります。
自分が何をしているのか本当にわからない限り、例外処理を使用してください。