如何按名称搜索文件并打开它?

时间:2015-09-25 05:46:05

标签: c#

目前我正在C# protected void Button1_Click(object sender, EventArgs e) { if (TextBox1.Text != "") { string[] pdffiles = Directory.GetFiles(@ "\\192.168.5.10\\fbar\\REPORT\\CLOTHO\\H2\\REPORT\\", "*.pdf", SearchOption.AllDirectories); string search = TextBox1.Text; ListBox1.Items.Clear(); foreach(string file in pdffiles) { ListBox1.Items.Add(Path.GetFileName(file)); } TextBox1.Focus(); } else { Response.Write("<script>alert('For this Wafer ID Report is Not Generated');</script>"); } } 进行网络应用程序项目。

这里我有一个问题是按名称搜索文件。下面的代码显示我做了,但问题是,它没有显示根据搜索名称的文件,因为它显示目录中的所有文件名。

另一个问题是,我不知道如何打开搜索文件。任何人都可以帮助我吗?

endif

3 个答案:

答案 0 :(得分:1)

首先,您必须使用搜索变量来过滤目标文件

protected void Button1_Click(object sender, EventArgs e)
        {
           string search = TextBox1.Text;

            if (TextBox1.Text != "") 
            {

                string[] pdffiles = Directory.GetFiles(@"\\192.168.5.10\\fbar\\REPORT\\CLOTHO\\H2\\REPORT\\", string.Format("*{0}*.pdf",search), SearchOption.AllDirectories);

                ListBox1.Items.Clear();
                foreach (string file in pdffiles)
                {

                    ListBox1.Items.Add(Path.GetFileName(file));
                }

                TextBox1.Focus();
            }
            else
            {
                Response.Write("<script>alert('For this Wafer ID Report is Not Generated');</script>");


            }
        }

现在打开所选文件。

protectecd void ListBox1_SelectedIndexChanged(object sender,EventArgs e)
{
      string fileName= ListBox1.SelectedItem.ToString();
      Response.ContentType = "Application/pdf";
    Response.AppendHeader("Content-Disposition",string.Format("attachment; filename={0}",filename));
    Response.TransmitFile(fileName);
    Response.End();
}

答案 1 :(得分:0)

您需要使用字符串搜索来检查文件是否与之匹配

     protected void Button1_Click(object sender, EventArgs e)
    {


        if (TextBox1.Text != "") 
        {
            File[] pdffiles = Directory.GetFiles(@"\\192.168.5.10\fbar\REPORT\CLOTHO\H2\REPORT\", "*.pdf", SearchOption.AllDirectories);
            string search = TextBox1.Text;
            ListBox1.Items.Clear();
            foreach (var file in pdffiles)
            {
                if(file.Name==search)
                {
                ListBox1.Items.Add(Path.GetFileName(file));
                }
            }

            TextBox1.Focus();
        }
        else
        {
            Response.Write("<script>alert('For this Wafer ID Report is Not Generated');</script>");


        }
    }

另请注意,您已在GetFiles函数中编写了路径

答案 2 :(得分:0)

我认为路径应该是@"\\192.168.5.10\fbar\REPORT\CLOTHO\H2\REPORT\"。此外,Directory.EnumerateFiles可能更有效。

我在这里搜索任何包含searchName的文件

using System.Linq;

string reportDirectoryName = "..."; // fill in with full path
string searchName = TextBox1.Text;
if (string.IsNullOrWhitespace(searchName))
  return ...;

var files = Directory.EnumerateFiles(reportDirectoryName, "*.pdf", SearchOption.AllDirectories);
  .Select(n => Path.GetFileName(n))
  .Where(n => n.Contains(searchName);
ListBox1.Items.Clear();
ListBox1.Items.Add(files);