2009年8月3日月曜日

[.NET]リパースポイントの判定

先日ディレクトリを再帰的に処理して。。。みたいな処理を書いていたのですが、なぜか特定のディレクトリでスタックオーバーフローが発生していました。
調べてみると、エラーの出るフォルダは、再起するリーパースポイントを設定していることがわかりました。で、リパースポイントを判定する方法を調べてみると、ファイルのアトリビュートから判定可能ということがわかりました。コードはこんな感じ。

if ((File.GetAttributes(path) & FileAttributes.ReparsePoint) == FileAttributes.ReparsePoint)
{
    //リーパースポイントの場合
}else{
    //リーパースポイント以外の場合
}


ほかにもさまざまな属性が取得できます。詳しくは、FileAttributes 列挙体に一覧が。

0 件のコメント: