C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 隠しフォルダを取得したくない


(過去ログ 172 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■99341 / inTopicNo.1)  隠しフォルダを取得したくない
  
□投稿者/ つくつくぼうし (3回)-(2022/03/17(Thu) 16:30:15)

分類:[C#] 

フォームアプリケーションでボタンを押すとフォルダの中身をリストビューに表示するアプリを作っています。
エクスプローラーと同じようにdocuments and settingsなどの隠しフォルダなどは見えない状態にしたいのですが
下記のコードだと表示されてしまいます。どうすればいいでしょうか?

private void button1_Click(object sender, EventArgs e)
{
string[] tempDir = Directory.GetDirectories(@"C:\");
//List<string> strList = new List<string>();
foreach (var t in tempDir)
{
DirectoryInfo dirInfo = new DirectoryInfo(t);
ListViewItem item = new ListViewItem(dirInfo.Name);
if ((dirInfo.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden)
{
//strList.Add(t);
listView1.Items.Add(t);
}

}

}

visual studio2019

引用返信 編集キー/
■99342 / inTopicNo.2)  Re[1]: 隠しフォルダを取得したくない
□投稿者/ PATIO (29回)-(2022/03/17(Thu) 17:10:51)
2022/03/17(Thu) 17:24:25 編集(投稿者)
2022/03/17(Thu) 17:12:00 編集(投稿者)

No99341 (つくつくぼうし さん) に返信
> フォームアプリケーションでボタンを押すとフォルダの中身をリストビューに表示するアプリを作っています。
> エクスプローラーと同じようにdocuments and settingsなどの隠しフォルダなどは見えない状態にしたいのですが
> 下記のコードだと表示されてしまいます。どうすればいいでしょうか?
> visual studio2019

VisualStudio2017Expressで単純に動かしてみましたが、
普通にHiddenが設定されているフォルダは表示されずにスキップされています。
表示されてしまいますと書かれていますが、デバッガで追いかけてみたのでしょうか?
少なくとも提示されているコードをコピペしてエラーを無くせば普通に動くと思います。

ちなみにですが、アクセス権がないフォルダに対して操作を行おうとすれば、当然エラーになります。
で、この手のエラーは例外としてスローされます。
例外を出さないように立ち回るにはエラーが出ないように操作を行う前にチェックをしてエラーが出るような操作を行わないようにするか、例外をキャッチするようにしてキャッチした例外の内容を判定してエラー処理を行うかです。
例外をキャッチするのは事前にチェックする事が出来ないようなケースに使うのが普通だと思いますので
事前にそのフォルダにアクセス権があるのかをチェックするべきでしょう。
あと、レアケースだと思いますが、
リストアップした後にフォルダを削除されてしまった場合もエラーになります。これに関しては何処まで頑張ってエラー対応するかと言う事になるかと思います。
引用返信 編集キー/
■99343 / inTopicNo.3)  Re[2]: 隠しフォルダを取得したくない
□投稿者/ ラルフ (3回)-(2022/03/18(Fri) 10:59:29)
No99342 (PATIO さん) に返信

>
> VisualStudio2017Expressで単純に動かしてみましたが、
> 普通にHiddenが設定されているフォルダは表示されずにスキップされています。
> 表示されてしまいますと書かれていますが、デバッガで追いかけてみたのでしょうか?
> 少なくとも提示されているコードをコピペしてエラーを無くせば普通に動くと思います。

新しくプロジェクトを作って、上のコードをコピペしたらHidden設定されているフォルダはスキップされていました。
もともと動作確認用だけに作ったプロジェクトコードなので、他のコードは記載しておらず、新しく作ったプロジェクトと全く同じ状態だったのですが。。。
結局、原因はわかりませんでしたがとりあえずコードに問題がない事だけわかったのでよかったです。
ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -