|
■No60387 (魔界の仮面弁士 さん) に返信
返答ありがとうございます。
> コマンドプロンプトを起動して、 > cd "C:\Users\ユーザ名\Documents" > で Documents ディレクトリーに移動した後、 > dir /aL > というコマンドを実行してみてください。 確認しました。確かに、<JUNCTION>として3個のディレクトリが表示されました。
>>GetFiles関数などでファイル情報を取得しようとすると実行時エラーになります。 > たとえ存在していたとしても、権限不足等によって例外が発生する事はあるので、 > いずれにしても、catch 処理はあった方が良いかと思います。 System.IO.Directory.Existsではtrueが返されたので、対応に困っていました。 権限不足なども考慮して例外処理で対応すべきなのですね。 >>存在しないディレクトリが列挙される理由、回避方法など分かりましたら教えてください。 > FileAttributes fa = File.GetAttributes(dinfo.FullName); > Console.WriteLine(string.Format("{0} - {1}", dinfo.FullName, fa)); > を実行してみてください。今回該当する物については、ReparsePoint の > 属性が付与されているかと思います。 属性で判断できるのですね。さっそく試してみます。 >>最終目的はDocumentsフォルダのサイズ取得です。 > 一見すると簡単な処理ではありますが、実は求める精度によっては、 > いろいろと考慮しなければならない事があったりします。 なるほど、そんなに単純な話ではないんですね。簡単に考えすぎていました。 サイズ取得の目的がファイルのコピー時間を見積もるためであり、 あまり高い精度は求められていないため、ひとまずはご提示いただいた方法で 試してみます。
魔界の仮面弁士さん、詳細な回答ありがとうございました。 ※スパースファイルや名前付きストリームなど、存在自体知りませんでした。勉強になりました。 簡易的な容量チェックが出来たら次のステップとしてそれらの対応に挑戦してみます。
|