我在我的应用程序中遇到问题我想根据 DateTime 从文件夹中获取所有文件。是否可以使用 Directory.GetFile() 或通过 C# 的任何其他内置函数
谢谢沙尚克
Linq 解决方案
string startFolder = @"c:\program files\Microsoft Visual Studio 9.0\";
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(startFolder);
IEnumerable<System.IO.FileInfo> fileList = dir.GetFiles("*.*", System.IO.SearchOption.AllDirectories);
IEnumerable<System.IO.FileInfo> fileQuery =
from file in fileList
where (file.CreationTime <= maxdate//replac eyour date here
&& file.CreationTime >= mindate)//replac eyour date here
orderby file.CreationTime
select file;
您可以像这样检查文件时间
string fileName = @"C:\MyPath\MyFile.txt";
if (File.Exists(fileName))
{
label_CreationTime.Text =
File.GetCreationTime(fileName).ToString();
label_LastAccess.Text =
File.GetLastAccessTime(fileName).ToString();
label_LastWrite.Text =
File.GetLastWriteTime(fileName).ToString();
}
所以要直接检查你的每个文件,你需要做这样的事情
string[] filePaths = Directory.GetFiles(@"c:\MyDir\");
foreach(string fileName in filePaths )
{
Console.Writeln(fileName );
Console.Writeln(File.GetCreationTime(fileName).ToString());
Console.Writeln(File.GetLastAccessTime(fileName).ToString());
Console.Writeln(File.GetLastWriteTime(fileName).ToString());
}
使用 System.IO.FileSystemInfo.CreationTime 的一个很好的例子可以在这里找到http://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.creationtime.aspx
获取 FileInfo 并检查创建/修改日期是我能想到的一个选项
你可以试试
var d = new DirectoryInfo(dirPath);
var filesInfo d.GetFiles().OrderBy(x => x.LastAccessTime);
或者您也可以查询日期时间
var filesInfo = d.GetFiles().Where(x=>x.LastAccessTime > datetTime);
您可以按属性使用Directory.EnumerateFiles
和过滤FileInfo
对象LastWriteTime
,例如:
var minimumDate = new DateTime(2012, 1, 1);
var directory = new DirectoryInfo(@"D:\MyFolder");
var files = directory.EnumerateFiles("*", SearchOption.AllDirectories)
.Where(f => f.LastWriteTime >= minimumDate);
请注意,这可能会引发UnauthorizedAccessException
.
要访问昨天创建的所有文件,请在 Linq 中执行以下操作,并设置所需的最小/最大值:
如果您想查看文件修改而不是创建,请替换CreationTime
为:LastWriteTime
var targetDirectory = "Put your dir here";
var minDate = DateTime.Today.AddDays(-1);
var maxDate = DateTime.Today.AddSeconds(-1);
try
{
var dir = new Directory(targetDirectory);
foreach (var file in dir.GetFiles().Where(f => f.CreationTime >= minDate
&& f.CreationTime <= maxDate))
{
// Do something with file.
Console.WriteLine("File : {0}", file.FullName);
}
}
catch( Exception e )
{
// Handle access exceptions.
}