Linq查找在文件目录中的是否存在特定的文件

View Code
static void Main(string[] args)
        {
            string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

            //FileQuery2(desktop);
            if (!string.IsNullOrEmpty(FileQuery()))
            {
                Console.WriteLine(FileQuery());
            }
            else
            {
                Console.WriteLine("电脑桌面上不存在text.txt文件");
            }
            Console.Read();
        }
            // 使用Linq查询
        // 查询桌面是否存在text.txt文件
        private static string FileQuery()
        {
            string desktopdir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
            
            // 获得指定目录和子目录中的文件名
            string[] filenames = Directory.GetFiles(desktopdir, "*.*", SearchOption.AllDirectories);
            List<FileInfo> files = new List<FileInfo>();
            foreach (var filename in filenames)
            {
                files.Add(new FileInfo(filename));
            }

            var results = from file in files
                          where file.Name == "text.txt"
                          select file;

            // 输出查询结果
            StringBuilder queryResult = new StringBuilder();
            foreach (var result in results)
            {
                queryResult.AppendLine("文件的路径为: " + result.FullName);
            }

            return queryResult.ToString();
        }

        /// <summary>
        /// 使用递归来查找文件
        ///  查询桌面是否存在text.txt文件
        /// </summary>
        private static void FileQuery2(string path)
        {
            // 获得指定目录中的文件(包含子目录)
            string[] filenames = Directory.GetFiles(path);
            List<FileInfo> files = new List<FileInfo>();
            foreach (var filename in filenames)
            {
                files.Add(new FileInfo(filename));
            }

            var results = from file in files
                          where file.Name == "text.txt"
                          select file;

            // 输出查询结果
            StringBuilder queryResult = new StringBuilder();
            foreach (var result in results)
            {
                Console.WriteLine("文件的路径为: " + result.FullName);
            }

            // 获得所有子目录
            string[] dirs = Directory.GetDirectories(path);
            if (dirs.Length > 0)
            {
                foreach (string dir in dirs)
                {
                    FileQuery2(dir);
                }
            }
        }

运行结果为:

 

 我的电脑桌面文件结果为:

 Desttop文件夹
    text.txt
    mytext文件夹
      text文件夹
            text.txt
        text.txt     
posted @ 2012-12-24 11:38  超级塞亚人  阅读(240)  评论(0)    收藏  举报