我在D盘放一个‘数据管理’的文件夹,文件夹下面按日期为名称又有若干个文件夹,每个文件夹下面上传了好多TXT文档。我现在要输一个关键字,怎么把包含关键字文档的地址都找出来··比如:D://数据管理/0110.XXX.txt!!!在这先谢谢各位了··

解决方案 »

  1.   

    循环txt类型文件把文件名字放入dataTable,对dataTable进行查询
      

  2.   

    应该先找到哪个TXT文档包含那个关键字,再确定文件夹的路径···怎么直接就查文件夹名呢
      

  3.   


            string strPath = @"D://数据管理/";
            System.Collections.Generic.List<string> searchNames=new System.Collections.Generic.List<string>();
            getFileNames(strPath, "1", searchNames);
            return searchNames;     // 此时的searchNames已经获取到了所有文件名
        ... ...    /// <summary>
        /// 根据条件为searchNames赋值
        /// </summary>
        /// <param name="strPath">给定路径</param>
        /// <param name="strKeyWords">给定查询关键字</param>
        /// <param name="searchNames">要存放的List</param>
        private void getFileNames(string strPath, string strKeyWords, System.Collections.Generic.List<string> searchNames)
        {
            string[] direcNames = Directory.GetDirectories(strPath);
            string[] fileNames = Directory.GetFiles(strPath);
            for (int i = 0; i < fileNames.Length; i++)
            {
                if (fileNames[i].Contains(strKeyWords))
                {
                    searchNames.Add(fileNames[i]);
                }
            }
            for (int i = 0; i < direcNames.Length; i++)
            {
                getFileNames(direcNames[i], strKeyWords, searchNames);
            }
        }
      

  4.   

    我就是想知道,怎么遍历所有的TXT文档,代码不晓得。应该是先确定这个文件夹存不存在输入的关键字吧,如果存在 就获取文档地址,如果不存在 就遍历下一个TXT文档
      

  5.   

    4楼的这段代码:
     string strPath = @"D://数据管理/";
            System.Collections.Generic.List<string> searchNames=new System.Collections.Generic.List<string>();
            getFileNames(strPath, "1", searchNames);
            return searchNames;     // 此时的searchNames已经获取到了所有文件名
    放在Button的单击事件里行不行,最后一句怎么报错了??初学者,请详细点把。
      

  6.   

    因为 searchNames 是个字符串集合,
    主要看你要如何显示这些文件名
    比如在前台加个Label叫lblInfo,单击事件里把
    return searchNames;
    改成:lblInfo.Text = string.Join("<br/>", searchNames.ToArray());
      

  7.   

               string[] strName= System.IO.Directory.GetFiles("D://数据管理", "关键字", System.IO.SearchOption.AllDirectories);
                List<string> list=new List<string>();
               foreach (string s in strName)
               {
                   if (s.EndsWith(".txt"))
                       list.Add(s);
               }
      

  8.   

    为什么还是获取不到呢?我试了下:我在‘数据管理’下面有个名为‘0210’文件夹,里面有2个txt文档,我在第一个(1.txt)里面写了‘张三’,第二个(2.txt)里面写了‘李四’。如果我调用getFileNames(strPath, "张三", searchNames);
    应该出来:D://数据管理/0210/1.txt,怎么出来的不是呢???
      

  9.   

    你查询内容,不是题目?            if (fileNames[i].Contains(strKeyWords))
                {
                    searchNames.Add(fileNames[i]);
                }那改下for循环里语句:            string fileExt = System.IO.Path.GetExtension(fileNames[i]);
                if (fileExt.ToLower() == ".txt")
                {
                    string strContent = File.ReadAllText(fileNames[i], System.Text.Encoding.UTF8);
                    if (strContent.Contains(strKeyWords))
                    {
                        searchNames.Add(fileNames[i]);
                    }
                }
      

  10.   

    是TXT包含输入的关键字,就显示该文件夹的地址,不存在输入的关键字的话就不显示该TXT地址,不是把所有的文件地址都显示出来!
      

  11.   

    我错了,// System.Text.Encoding.UTF8
    // 改成 System.Text.Encoding.Default