LINQ对文件目录的基本操作

EnForGrass 2012-04-20 04:56:48
加精
RT,给学习LINQ的新手们一些借鉴。本文主要写了6个文件操作,代码分别贴上。
/*通过函数的形式表现出来*/

//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
*/



//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
*/



//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*/



//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 */



//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 */



//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来操作。希望共同学习。
...全文
3615 103 打赏 收藏 转发到动态 举报
写回复
用AI写文章
103 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzxandfcm 2013-01-06
  • 打赏
  • 举报
回复
非常不错,保存一个
sontiq 2012-05-16
  • 打赏
  • 举报
回复
为什么要用LINQ来操作文件目录呢?相当于要你用大炮来切水果?
whr 2012-05-16
  • 打赏
  • 举报
回复
可以直接查询集合啊 好玩
mingcsharp 2012-05-05
  • 打赏
  • 举报
回复
见识了
T_pron 2012-04-29
  • 打赏
  • 举报
回复
谢谢LZ,值得收藏
aishuju1 2012-04-28
  • 打赏
  • 举报
回复

谢谢了.
冷寂枯雨 2012-04-28
  • 打赏
  • 举报
回复
linq 都几年前的东西了。
猴头 2012-04-27
  • 打赏
  • 举报
回复
谢谢分享,干活的时候偶尔用用linq,方便了很多
阿星sir 2012-04-27
  • 打赏
  • 举报
回复
很好,学习!
  • 打赏
  • 举报
回复
很好,学习!
ouxianshuma 2012-04-26
  • 打赏
  • 举报
回复
很好的学校内容····
  • 打赏
  • 举报
回复
很好 非常哈

szjarvis 2012-04-25
  • 打赏
  • 举报
回复
谢楼主分享
莫舍桥西 2012-04-25
  • 打赏
  • 举报
回复
值得有空的时候看看
Dr-饼 2012-04-25
  • 打赏
  • 举报
回复
谢谢分享!
EnForGrass 2012-04-25
  • 打赏
  • 举报
回复
代码已经上传到下载频道了,需要的坛友们可以去免费下载
http://download.csdn.net/detail/chinajiyong/4255842
zhengjiehua03 2012-04-24
  • 打赏
  • 举报
回复
代码看不懂。。郁闷呢啊。。
myhope88 2012-04-24
  • 打赏
  • 举报
回复
不错,支持下
BasicArchitect 2012-04-23
  • 打赏
  • 举报
回复
必须推荐
tianshengyun 2012-04-23
  • 打赏
  • 举报
回复
hao de hen
加载更多回复(49)

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧