2009-06-01 90 views
0

給定一個文件名,我該如何有效地在磁盤上搜索該文件?從VB.NET中搜索文件

(Visual Studio 2005中,即.NET 2.0)

+0

我很抱歉的混淆。我正在使用VB.net,VS 2005 – 2009-06-01 09:56:43

回答

1

你的問題是模糊的,不指定任何編程語言。因此,您可以使用命令提示符執行此操作:

dir /s /b d:\<filename> 

或者在使用任何您使用的語言的系統調用中使用上述內容。

在C/C++或使用本機Win32 API的任何其它語言使用:

和遞歸噸通過你遇到的任何目錄。在C#/ VB /其他.NET語言,它是:

0

如果你要實現的搜索機制,我會像這樣的東西開始(C#)

using System; 
using System.Collections.Generic; 
using System.IO; 

namespace Samples.FileSearcher 
{ 
    public delegate void FileFoundHandler(string fileName); 
    public delegate void SearchStatChangeHandler(bool newStat); 
    public class FileSearch 
    { 
     private bool _isSearching; 
     private FileFoundHandler _fileFound; 
     private SearchStatChangeHandler _searchStatusChanged; 
     public bool IsSearching { get { return _isSearching; } } 
     public event FileFoundHandler FileFound{add { _fileFound += value; }remove { _fileFound -= value; }} 
     public event SearchStatChangeHandler SearchingStatusChanged { add { _searchStatusChanged += value; } remove { _searchStatusChanged -= value; } } 

     public void Search(string rootFolder, string filePattern) 
     { 
      ChangeStat(true); 
      Queue<string> folderList = new Queue<string>(); 
      folderList.Enqueue(rootFolder); 

      while (folderList.Count > 0) 
      { 
       string currentFolder = folderList.Dequeue(); 
       foreach (string folder in Directory.GetDirectories(currentFolder)) 
        folderList.Enqueue(folder); 
       foreach (string foundFile in Directory.GetFiles(currentFolder, filePattern)) 
        if (_fileFound != null) 
         _fileFound(foundFile); 
      } 
      ChangeStat(false); 
     } 
     private void ChangeStat(bool newStat) 
     { 
      _isSearching = newStat; 
      if (_searchStatusChanged != null) _searchStatusChanged(_isSearching); 
     } 

    } 
} 

這只是一個快速類做。你應該使用它來實現表單,在搜索方法上處理一些錯誤,並且可能會取消一些標記,這樣當你已經找到你想要的東西時,你將不會永遠搜索。

我實現了我的形式是這樣的:

private void button1_Click(object sender, EventArgs e) 
    { 
     listView1.Items.Clear(); 
     Samples.FileSearcher.FileSearch searcher = new Samples.FileSearcher.FileSearch(); 
     searcher.FileFound += new FileFoundHandler(searcher_FileFound); 
     searcher.Search(textBox1.Text, textBox2.Text); 
    } 

    void searcher_FileFound(string fileName) 
    { 
     listView1.Items.Add(fileName); 
    } 

如果你有更具體的疑問,請張貼起來,我們將盡力尋找到它,並盡我們所能來幫助你。