簡體   English   中英

從VB.NET搜索文件

[英]Searching for a file from VB.NET

給定文件名后,如何有效地在磁盤上搜索該文件?

(Visual Studio 2005,即.NET 2.0)

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

dir /s /b d:\<filename>

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

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

並遞歸遍歷您遇到的任何目錄。 在C#/ VB /其他.Net語言中,它是:

如果您想實現搜索機制,我將從類似這樣的內容開始(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);
        }

    }
}

這只是一個快速入門。 您應該使用它來實現表單,對Search Method進行一些錯誤處理,並可能需要取消標志,以便當您找到所需的內容時就不會永遠搜索。

我用以下形式實現了我的表格:

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);
    }

如果您有更具體的疑問,請發布它們,我們將嘗試調查並盡最大努力為您提供幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM