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 */
- C# code
//5、比较两个文件夹是否存在同名文件 private static void FileCompareQuery() { ///获取"我的文档"的路径 string directoryA = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); ///获取"我的图片"的路径 string directoryB = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); ///获取我的文档的文件信息 List<FileInfo> filesA = new List<FileInfo>(); ///获取我的图片的文件信息 List<FileInfo> filesB = new List<FileInfo>(); ///获取我的文档文件列表信息 foreach (var file in Directory.GetFiles(directoryA)) { filesA.Add(new FileInfo(file)); } ///获取我的图片文件列表信息 foreach (var file in Directory.GetFiles(directoryB)) { filesB.Add(new FileInfo(file)); } ///查询同名文件 var fSameFile = from fA in filesA join fB in filesB on fA.Name equals fB.Name orderby fA.Name select fA; ///显示查询结果 foreach (var fsf in fSameFile) { Console.WriteLine(fsf.Name); } }运行结果:/* 1.png */- C# code
//6、查询包含指定文件内容的txt文档 private static void FileExtensionsTextQuery() { ///获取"我的文档"的路径 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)); } string FindString = "我相信自己"; ///按文件扩展名分组 var fExtensionsText = from fetq in files where fetq.Extension == ".txt" let content = File.ReadAllText(fetq.FullName, System.Text.Encoding.GetEncoding("gb2312")) where content.Contains(FindString) == true orderby fetq.Name select fetq; ///显示查询结果 foreach (var f in fExtensionsText) { Console.WriteLine(f.Name); } } //运行结果: /* 个人述职报告.txt */总结:6个文件的操作整体上比较简单,主要是结合LINQ来操作。希望共同学习。
[解决办法]
必须推荐
[解决办法]
- C# code
private static void FileQuery() { string directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); var filevalues = Directory.GetFiles(directory) .Select(file=>new FileInfo(file)) .Where(file=> file.Extension.ToLower() == ".pdf" && file.Name.Contains("报告") ) .OrderBy(file=>file.Name) .ToList(); filevalues.ForEach(f=>Console.WriteLine(f.Name)); }//抛砖引玉,觉得这样简化一下会更优雅一些//Very Happy 看到论坛使用和讨论LINQ的人越来越多
[解决办法]
[解决办法]
[解决办法]
从路径字符串集合到fileinfo集合可以用select
[解决办法]
必定 火
linq
感觉 都是后半部分,用到了 Linq
有没有直接用的
[解决办法]
支持下lz,应该加精。
[解决办法]
必须推荐[b][/b]
[解决办法]
楼主牛逼 支持顶一下
[解决办法]
刚开始选修了C#,表示很多看不懂!
[解决办法]
如果基于.net4.0,要注意应该使用 DirectoryInfo.EnumerateDirectories(),DirectoryInfo.EnumerateDirectories()等。
[解决办法]
LINQ是什么东西?
[解决办法]
这个必须收藏学习
[解决办法]
支持一下...
[解决办法]
有必要学习啊。3.5 4.0
[解决办法]
对于补充自己的LINQ TO 集合还是很有帮助的;
[解决办法]
学习了,谢谢。
[解决办法]
感谢楼主分享!
收藏,学习!
[解决办法]
谢谢前辈们
[解决办法]
[解决办法]
好东西 值得看看发帖
[解决办法]
绝对要顶!太好了!
[解决办法]
看不懂
[解决办法]
好好学习天天向上
[解决办法]
谢谢,收藏了。
[解决办法]
谢谢,收藏了
[解决办法]
高手啊
[解决办法]
先顶。应该有用
[解决办法]
比较基础的东西,对新手帮助
[解决办法]
好东西!
[解决办法]
先顶。应该有用
[解决办法]
好贴 太喜欢了 谢谢楼主
[解决办法]
感谢 分享!
[解决办法]
这个可以试试
[解决办法]
没有涉及过。楼主给讲一下
[解决办法]
chu xue
[解决办法]
很好啊啊啊啊
------解决方案--------------------
这个其实还是对集合的一些操作而已,
用了linq还要分几次操作,有点繁琐
[解决办法]
像这种小技巧有时也挺有用的,
比如还可以对特定文件类型进行统计,
查找几个指定目录中是否有重复文件等
[解决办法]
支持楼主,感谢分享
[解决办法]
不错,感谢分享
[解决办法]
感谢楼主的分享。Linq看来真的很好使
[解决办法]
看来明白人越来越多了,高兴
[解决办法]
hao de hen
[解决办法]
必须推荐
[解决办法]
用Linq写的果真精简不少。。。
[解决办法]
不错,支持下
[解决办法]
谢谢分享!
[解决办法]
值得有空的时候看看
[解决办法]
谢楼主分享
[解决办法]
很好 非常哈
[解决办法]
很好的学校内容····
[解决办法]
很好,学习!
[解决办法]
很好,学习!
[解决办法]
谢谢分享,干活的时候偶尔用用linq,方便了很多
[解决办法]
linq 都几年前的东西了。
[解决办法]
谢谢了.
[解决办法]
谢谢LZ,值得收藏
[解决办法]
见识了