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

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

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

Re[15]: ファイル検索の手法


(過去ログ 77 を表示中)

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

■45498 / inTopicNo.1)  ファイル検索の手法
  
□投稿者/ msnr (16回)-(2010/01/14(Thu) 00:11:32)

分類:[C#] 

C:ドライブのどこにあるか分からない"Graph.exe"というアプリケーションを

            string[] files = Directory.GetFiles("C:\\", "Graph.exe");
            foreach (string f in files)
            {
                MessageBox.Show(f);
            }

この様な感じでとりあえずテスト的に調べてみましたが、記述方法が分からず
うまくいきません・・・
どの様に検索するのでしょう?
現在"Graph.exe"はデスクトップに間違いなく有る状態です。

ご教授頂けましたら幸いです。
宜しくお願いします。

引用返信 編集キー/
■45499 / inTopicNo.2)  Re[1]: ファイル検索の手法
□投稿者/ よねKEN (433回)-(2010/01/14(Thu) 00:46:35)
> この様な感じでとりあえずテスト的に調べてみましたが、記述方法が分からず
> うまくいきません・・・
> どの様に検索するのでしょう?

「C# ファイルを検索」でWebを検索してください:-)
必要な情報を得られます。
引用返信 編集キー/
■45500 / inTopicNo.3)  Re[2]: ファイル検索の手法
□投稿者/ msnr (17回)-(2010/01/14(Thu) 01:22:59)
No45499 (よねKEN さん) に返信
>
> 「C# ファイルを検索」でWebを検索してください:-)
> 必要な情報を得られます。

当方、Windows7 VS2008 Pro 環境です。(遅くなりました・・)
よねKEN さん、ありがとうございます。
やはり、階層の深いフォルダは難しいようですね。

とりあえず今回の件はデスクトップに限定することにしました。
よって案件は解決なのですが、1つ疑問が出てきました。

Windows7特有の物なのでしょうか?
ここの
http://jeanne.wankuma.com/tips/csharp/directory/getfilesmostdeep.html
を先ほど参考にさせてもらったのですが、
"C:\Document and Setting"でアクセス拒否されました。
WindowsXP でVB6を使ってた頃はそんなこと無かったのですが。
なぜなのでしょう?

全然質問内容が変わってしまいましたが、ご教授頂けたら幸いです。
また、初歩的な質問ですいません。。

引用返信 編集キー/
■45502 / inTopicNo.4)  Re[3]: ファイル検索の手法
□投稿者/ 774RR (454回)-(2010/01/14(Thu) 08:24:49)
そりゃ C:\Documents and Settings なんて Vista 以後には存在しないもん。

引用返信 編集キー/
■45510 / inTopicNo.5)  Re[4]: ファイル検索の手法
□投稿者/ GOD (25回)-(2010/01/14(Thu) 10:28:47)
No45502 (774RR さん) に返信
> そりゃ C:\Documents and Settings なんて Vista 以後には存在しないもん。
>
互換のためにVista にもあるみたいですよ。接合ポイント(ショートカット?)と呼ばれるものらしいけど。

アクセスできないのは所有権とかセキュリティの問題かと。
http://www.vista-mania.com/communityvista/replieslist.asp?QID=7
引用返信 編集キー/
■45572 / inTopicNo.6)  Re[5]: ファイル検索の手法
□投稿者/ Jitta (619回)-(2010/01/14(Thu) 22:20:45)
Jitta さんの Web サイト
No45510 (GOD さん) に返信
> ■No45502 (774RR さん) に返信
>>そりゃ C:\Documents and Settings なんて Vista 以後には存在しないもん。
>>
> 互換のためにVista にもあるみたいですよ。接合ポイント(ショートカット?)と呼ばれるものらしいけど。
>
> アクセスできないのは所有権とかセキュリティの問題かと。
> http://www.vista-mania.com/communityvista/replieslist.asp?QID=7

そいつも考慮に入れて、コード付き(ついでにバグ付き)
http://social.msdn.microsoft.com/Forums/ja-JP/csharpexpressja/thread/01369897-9ccc-445c-a7eb-df1086c57926

引用返信 編集キー/
■45574 / inTopicNo.7)  Re[6]: ファイル検索の手法
□投稿者/ msnr (18回)-(2010/01/14(Thu) 22:44:14)
No45572 (Jitta さん) に返信
> ■No45510 (GOD さん) に返信
>>■No45502 (774RR さん) に返信
> >>そりゃ C:\Documents and Settings なんて Vista 以後には存在しないもん。
> >>
>>互換のためにVista にもあるみたいですよ。接合ポイント(ショートカット?)と呼ばれるものらしいけど。
>>
>>アクセスできないのは所有権とかセキュリティの問題かと。
>>http://www.vista-mania.com/communityvista/replieslist.asp?QID=7
>
> そいつも考慮に入れて、コード付き(ついでにバグ付き)
> http://social.msdn.microsoft.com/Forums/ja-JP/csharpexpressja/thread/01369897-9ccc-445c-a7eb-df1086c57926
>

皆さま、ありがとうございます。
業務多忙の為、返信が遅くなってしまいすいませんでした。

> >>そりゃ C:\Documents and Settings なんて Vista 以後には存在しないもん。

私のPCがもともとvistaでxp ダウングレードモデルだからなのでしょうか?

>>アクセスできないのは所有権とかセキュリティの問題かと。
>>http://www.vista-mania.com/communityvista/replieslist.asp?QID=7
こちらは非常に参考になりました。
へ〜〜そうなんだの連続です・・・。

> そいつも考慮に入れて、コード付き(ついでにバグ付き)
> http://social.msdn.microsoft.com/Forums/ja-JP/csharpexpressja/thread/01369897-9ccc-445c-a7eb-df1086c57926

まだ見たばかりで解読できてませんが、少しづつ頑張ってみます。

まだ全然解決してないので、チェックは入れずに頑張ってみます。

# 亀スレになるかも知れませんが、ご容赦ください
引用返信 編集キー/
■45580 / inTopicNo.8)  Re[7]: ファイル検索の手法
□投稿者/ なちゃ (351回)-(2010/01/14(Thu) 23:48:09)
旧Documents and Settingsなどのパスには、互換性のためにジャンクションが張られています。
ただし、これはあくまで適切に作成されていない古いアプリケーションとの互換性のためだけに用意されたものであり、
このパスを使用して一覧を取得する権限が「わざと」外されています。
そのため、エクスプローラなどで普通にこのパスを開こうとすると、アクセスが拒否されます。
※新たに作成するアプリケーションまでが、誤ってこのパスを使用することをなるべく防ぐため

引用返信 編集キー/
■45629 / inTopicNo.9)  Re[8]: ファイル検索の手法
□投稿者/ Jitta (622回)-(2010/01/16(Sat) 22:09:17)
No45580 (なちゃ さん) に返信
> 旧Documents and Settingsなどのパスには、互換性のためにジャンクションが張られています。
> ただし、これはあくまで適切に作成されていない古いアプリケーションとの互換性のためだけに用意されたものであり、
> このパスを使用して一覧を取得する権限が「わざと」外されています。
> そのため、エクスプローラなどで普通にこのパスを開こうとすると、アクセスが拒否されます。
> ※新たに作成するアプリケーションまでが、誤ってこのパスを使用することをなるべく防ぐため
>

おお。。。リパースポイントすべてがはじかれるのだと思い込んでいました。
引用返信 編集キー/
■45876 / inTopicNo.10)  Re[9]: ファイル検索の手法
□投稿者/ msnr (20回)-(2010/01/21(Thu) 12:31:10)
皆さま、スレ主のくせに遅いレスですいません。
テスト的にWindowsFormを作ってみました。
"C:\\"以下のすべてのファイルを列挙しようと考えてます。

再帰処理(下記コード)にて処理を試みたのですが"C:\\"の1階層下の
フォルダ以降(例:「C:」→「C:\hoge」→「C:\hoge\hogehoge」の
場合「C:\hoge\hogehoge」) のファイルを列挙しようと思うと、どの
様な記述になるのでしょう。

アドバイス頂けましたら幸いです。
何とも厚かましいお願いですが、宜しくお願いします。

using System;
using System.Windows.Forms;
using System.IO;

namespace FindFile
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string dir = "C:\\";
            DirSearch(dir);
            // テスト用
            string[] Finddirectory = Directory.GetDirectories(dir);
            this.listBox2.Items.AddRange(Finddirectory);
        }
        void DirSearch(string strDir)
        {
            try
            {
                foreach (string d in Directory.GetDirectories(strDir))
                {
                    foreach (string f in Directory.GetFiles(d, "*.*"))
                    {
                        this.listBox1.Items.Add(f);
                    }
                    DirSearch(d);
                }
            }
            catch (Exception)
            {
            }
        }
    }
}

引用返信 編集キー/
■45879 / inTopicNo.11)  Re[10]: ファイル検索の手法
□投稿者/ επιστημη (2400回)-(2010/01/21(Thu) 13:09:07)
επιστημη さんの Web サイト
void DirSearch(string strDir) {
  foreach ( ディレクトリ:strDir にある各 entry について ) {
    if ( entry が directory ) {
      DirSearch(entry);
    } else {
      entryをlistBoxに追加
    }
  }
}


引用返信 編集キー/
■45880 / inTopicNo.12)  Re[11]: ファイル検索の手法
□投稿者/ msnr (21回)-(2010/01/21(Thu) 13:50:40)
No45879 (επιστημη さん) に返信
> void DirSearch(string strDir) {
>   foreach ( ディレクトリ:strDir にある各 entry について ) {
>     if ( entry が directory ) {
>       DirSearch(entry);
>     } else {
>       entryをlistBoxに追加
>     }
>   }
> }
> 
> 
ありがとうございます!!
全然、C#を理解していないものでして四苦八苦しております。
こんな感じですね、実際にはlistBoxではなく配列化して"Graph.exe"
を探すものにして行こうと思ってます。

        private void button1_Click(object sender, EventArgs e)
        {
            string dir = "C:\\";
            DirSearch(dir);
        }
        private void DirSearch(string strDir) 
        {
            try
            {
                foreach (string entry in Directory.GetDirectories(strDir))
                {
                    if (!Path.HasExtension(entry))
                    {
                        DirSearch(entry);
                    }
                    else
                    {
                        this.listBox2.Items.Add(entry);
                    }
                }
            }
            catch {}
        }

# 後は高速化を頑張ってみます

引用返信 編集キー/
■45906 / inTopicNo.13)  Re[12]: ファイル検索の手法
□投稿者/ Jitta on the way (520回)-(2010/01/21(Thu) 19:02:39)
No45880 (msnr さん) に返信
リンク先にそのまんま書いてあるのに(ToT)
引用返信 編集キー/
■45914 / inTopicNo.14)  Re[13]: ファイル検索の手法
□投稿者/ msnr (22回)-(2010/01/21(Thu) 20:52:59)
No45906 (Jitta on the way さん) に返信
> ■No45880 (msnr さん) に返信
> リンク先にそのまんま書いてあるのに(ToT)

その通りですね、ただ慣れるために自分で書いてみようと
思いましてめんどくさい事をしています。

しかし残念ながら、先ほどの様に
>再帰処理(下記コード)にて処理を試みたのですが"C:\\"の1階層下の
>フォルダ以降(例:「C:」→「C:\hoge」→「C:\hoge\hogehoge」の
>場合「C:\hoge\hogehoge」) のファイルを列挙しようと思うと、どの
>様な記述になるのでしょう。

が上手くいかなく困ってます。

現在のコードは下記となります。
とりあえずアクセス権の難しい話は後にして
"C:\"以下のフォルダ列挙をしようと頑張ってます。

厚かましいですが、アドバイスなんか有れば教えてください。
宜しくお願いします。

using System;
using System.IO;

namespace FindFile
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string dir = "C:\\";
            DirSearch(dir);
        }
        private void DirSearch(string strDir) 
        {
            try{
                foreach (string entry in Directory.GetDirectories(strDir)){
                    FileAttributes Attribute = File.GetAttributes(entry);
                    if ((Attribute & FileAttributes.Directory) 
                        == FileAttributes.Directory){
                        this.listBox1.Items.Add(entry);
                    }
                    else{
                        DirSearch(entry);
                    }
                }
            }
            catch {}
        }
    }
}

引用返信 編集キー/
■45918 / inTopicNo.15)  Re[14]: ファイル検索の手法
□投稿者/ msnr (23回)-(2010/01/21(Thu) 21:56:13)
皆さま、ご協力ありがとうございます。

ここを参考にして完成しました。
http://jeanne.wankuma.com/tips/csharp/directory/getfilesmostdeep.html

と言うよりもほとんど真似ましたが・・・
今後、より一層の精進いたします。

改めまして、お付き合いありがとうございました。
引用返信 編集キー/
■45919 / inTopicNo.16)  Re[15]: ファイル検索の手法
□投稿者/ msnr (24回)-(2010/01/21(Thu) 21:56:51)
No45918 (msnr さん) に返信
> 皆さま、ご協力ありがとうございます。
>
> ここを参考にして完成しました。
> http://jeanne.wankuma.com/tips/csharp/directory/getfilesmostdeep.html
>
> と言うよりもほとんど真似ましたが・・・
> 今後、より一層の精進いたします。
>
> 改めまして、お付き合いありがとうございました。

すいません、解決済みです。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -