日期:2014-05-20  浏览次数:21079 次

LINQ对文件目录的基本操作
RT,给学习LINQ的新手们一些借鉴。本文主要写了6个文件操作,代码分别贴上。
/*通过函数的形式表现出来*/
C# code

        //1、查询指定名称的文件
        private static void FileQuery()
        {
            ///获取"我的文档"的路径
            string directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            List<FileInfo> files = new List<FileInfo>();
            ///获取文件列表信息
            foreach (var file in Directory.GetFiles(directory))
            {
                files.Add(new FileInfo(file));
            }
            ///查询文件列表信息
            var filevalues = from file in files
                             where file.Extension == ".pdf" && file.Name.IndexOf("报告") > -1
                             orderby file.Name
                             select file;
            ///显示查询结果
            foreach (var f in filevalues)
            {
                Console.WriteLine(f.Name);
            }
        }
             //运行结果:
             /*
             个人述职报告.pdf
             个人述职报告-96.pdf
              WPF程序设计指南(有书).pdf
             */



C# code

        //2、查询指定扩展名的文件
        private static void FileExtensionsQuery()
        {
            ///获取"我的文档"的路径
            string directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            List<FileInfo> files = new List<FileInfo>();
            ///获取文件列表信息
            foreach (var file in Directory.GetFiles(directory))
            {
                files.Add(new FileInfo(file));
            }
            ///按文件扩展名分组
            var fExtensions = from fe in files
                              group fe by fe.Extension into g
                              orderby g.Key
                              select g;
            ///显示查询结果
            foreach (var f in fExtensions)
            {
                foreach (var fi in f)
                {
                    Console.WriteLine(fi.Name);
                }
            }
        }
            //运行结果:
             /*
            desktop.ini
            个人述职报告.pdf
            个人述职报告-96.pdf
             WPF程序设计指南(有书).pdf
            1.png
            个人述职报告.txt 
             */



C# code

        //3、查询指定属性的文件
        private static void FileAttributeQuery()
        {
            ///获取"我的文档"的路径
            string directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            ///获取文件信息
            List<FileInfo> files = new List<FileInfo>();
            ///获取文件列表信息
            foreach (var file in Directory.GetFiles(directory))
            {
                files.Add(new FileInfo(file));
            }
            //根据文件大小(大于1M小于4M)查询文件,并进行分组排序,
            var fAttribute = from fa in files
                             where fa.Length >= 1024 * 1024 && fa.Length <= 4096 * 1024
                             orderby fa.Name
                             select fa;
            ///显示查询结果
            foreach (var fa in fAttribute)
            {
                Console.WriteLine(fa.Name);
            }
        }
//运行结果:
/*WPF程序设计指南(有书).pdf*/



C# code

        //4、统计文件夹的大小
        private static void FileSizeQuery()
        {
            ///获取"我的文档"的路径
            string directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            ///获取文件信息
            List<FileInfo> files = new List<FileInfo>();
            ///获取文件列表信息
            foreach (var file in Directory.GetFiles(directory))
            {
                files.Add(new FileInfo(file));
            }
            //搜索文件的大小
            var fSize = from fs in files
                        select fs.Length;
            ///对文件大小求和
            long size = fSize.Sum();
            ///显示查询结果
            Console.WriteLine(size.ToString());
        }
//运行结果:
/* 10786712 */