0

我在我的应用程序中遇到问题我想根据 DateTime 从文件夹中获取所有文件。是否可以使用 Directory.GetFile() 或通过 C# 的任何其他内置函数

谢谢沙尚克

在此处输入图像描述

4

6 回答 6

1

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()); 
}
于 2012-07-19T08:16:47.677 回答
1

使用 System.IO.FileSystemInfo.CreationTime 的一个很好的例子可以在这里找到http://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.creationtime.aspx

于 2012-07-19T08:18:18.550 回答
0

获取 FileInfo 并检查创建/修改日期是我能想到的一个选项

于 2012-07-19T08:18:28.680 回答
0

你可以试试

    var d = new DirectoryInfo(dirPath);
    var filesInfo d.GetFiles().OrderBy(x => x.LastAccessTime);

或者您也可以查询日期时间

   var filesInfo = d.GetFiles().Where(x=>x.LastAccessTime > datetTime);
于 2012-07-19T08:19:39.927 回答
0

您可以按属性使用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.

于 2012-07-19T08:21:41.520 回答
0

要访问昨天创建的所有文件,请在 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.
}
于 2012-07-19T08:33:34.580 回答