2011-07-20 4 views
1

私はこのコードを持っている問題を解決する方法がある場合、私は思っていた:C#のファイルのアクセス権の除外

DriveInfo[] dDrives = DriveInfo.GetDrives(); 
foreach(DriveInfo dDrive in dDrives) 
{ 
    try 
    { 
     string sDrive = dDrive.ToString(); 
     string[] sSearch = Directory.GetFiles(sDrive, sFile, SearchOption.AllDirectories); 
     foreach(string sResult in sSearch) 
     { 
      textBox2.Text = sResult + Environment.NewLine; 
     } 
    } 
    catch 
    { 
    } 
} 

それがためのパーミッションをアクセスできないファイルに遭遇すると、それは後藤ますキャッチアンドエンド。私が必要とするのは、アクセスできないファイルを見つけ出し、tryブロックに戻り、検索を続行することです。どんな助けも大変ありがとう!ありがとう!

+0

参照[.NETでファイルのアクセスが拒否されているかどうかを簡単に確認する方法は?](http://stackoverflow.com/questions/265953/how-can-you-easily-check-if-access- net-in-a-file-in-net) – Justin

+0

も参照してください:http://stackoverflow.com/q/1393178/15667 – xan

答えて

1

フロー制御の例外を使用してロジックを再考する必要がありますが、実際のコードは間違っています。

これがないベストプラクティスが、動作します:正確にあなたがファイルにアクセスしている

string sDrive = dDrive.ToString(); 
try 
{ 
    string[] sSearch = Directory.GetFiles(sDrive, sFile, SearchOption.AllDirectories); 
} 
catch {} 

foreach(string sResult in sSearch) 
{ 
    textBox2.Text = sResult + Environment.NewLine; 
} 

?リストファイル名(Directory.GetFiles)の呼び出しと、返されたファイル名のリストが表示されます。

+0

はい、ありがとう、例外を使用するためのよりよい代替手段は何ですか? –

+0

@Bali - コード内のファイルに正確にアクセスするのはどこですか? – Oded

+0

私はそれがここにあると推測しました:string [] sSearch = Directory.GetFiles(sDrive、sFile、SearchOption.AllDirectories); –

関連する問題