繁体   English   中英

使用 c# 进行文件搜索

[英]File searching with c#

我想在所选磁盘的所有文件夹中搜索用户输入的文件。 如果文件直接在磁盘上,我会得到回报,但它不会检查子文件夹。

string arama = TextBox1.Text;
string yol = ListBox1.SelectedItem.Value;

if (File.Exists(yol + arama))
{
    string[] files = Directory.GetFiles(yol, arama);
    foreach (string file in files)
        ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + "DOSYA VAR. DOSYA YOLU = " + file + "');", true);
}
else
{
    try
    {
        string[] files2 = Directory.GetFiles(yol, arama, SearchOption.AllDirectories);
        if (files2 == null)
            ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + "DOSYA YOK" + "');", true);
        else
            foreach (string file in files2)
                ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + "DOSYA VAR. YOLU:" + files2 + "');", true);
    }
    catch (Exception ex)
    {
        ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + "DOSYA VAR. YOLU:" + ex + "');", true);
    }
}

如果文件存在,您似乎需要添加SearchOption.AllDirectories

在搜索操作中包括当前目录及其所有子目录。 此选项包括重新分析点,例如搜索中的已安装驱动器和符号链接。

所以这

if (File.Exists(yol + arama))
{
    string[] files = Directory.GetFiles(yol, arama);
    foreach (string file in files)
        ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + "DOSYA VAR. DOSYA YOLU = " + file + "');", true);
}

应该:

if (File.Exists(yol + arama))
{
    string[] files = Directory.GetFiles(yol, arama, SearchOption.AllDirectories);
    foreach (string file in files)
        ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + "DOSYA VAR. DOSYA YOLU = " + file + "');", true);
}

请参阅: GetFiles(String, String, SearchOption)

您可以使用此代码搜索所有子文件夹;

private void ListFiles(DirectoryInfo dr, string searchname)
{
    System.IO.FileInfo[] files = null;
    System.IO.DirectoryInfo[] subDirs = null;
    try
    {
        files = dr.GetFiles(searchname + ".*");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }

    if (files != null)
    {
        foreach (FileInfo fi in files)
        {
            allFiles.Add(fi);
        }
        subDirs = dr.GetDirectories();

        foreach (DirectoryInfo di in subDirs)
        {
            ListFiles(di, searchname);
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM