这段时间,正在学习LINQ,感觉LINQ确实简单的,操作也很方便,这篇文章主要写的是LINQ对文件目录的基本操作。虽然简单,但是同时自己同时复习了对文件类FileInfo和File的基本用法,结合了LINQ,感觉挺有意思的,给像和我一样想学习LINQ的新手们一些借鉴。
本文主要写了6个文件操作,代码分别贴上。 /*
-------------------------------------
Context:LINQ的文件目录操作
-------------------------------------
Author:Chinajiyong
-------------------------------------
DateTime:2012-04-20
-------------------------------------
*/
/*通过函数的形式表现出来*/
//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);
}
}
运行结果:
/*
-------------------------------------
Context:LINQ的文件目录操作
-------------------------------------
Author:Chinajiyong
-------------------------------------
DateTime:2012-04-20
-------------------------------------
*/
/*通过函数的形式表现出来*/
//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);
}
}
}
//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());
}
运行结果:
//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);
}
}
运行结果:
//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);
}
}
运行结果:
//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);
}
}