0

有没有办法获取所有文件(在特定日期最后修改),并将它们保存到一个新文件夹中(使用特定日期的名称)。

示例文件:

里面C:/

Image File     Date Modified

Image001.jpg   11/12/2012
Image002.jpg   11/12/2012
Image003.jpg   11/13/2012
Image004.jpg   11/12/2012

输出应该是:

C:/20121112/

Image001.jpg
Image002.jpg
Image004.jpg  

C:/20121113

Image003.jpg

我目前正在使用以下语法:

var mydirectory = new DirectoryInfo("C:/");
DateTime from_date = DateTime.Now.AddDays(-1);
DateTime to_date = DateTime.Now;
var files = directory.GetFiles()
  .Where(file=>file.LastWriteTime >= from_date && file.LastWriteTime <= to_date);

但我不知道如何将 var 文件保存到另一个文件夹名称。

4

3 回答 3

6

也许:

var files = Directory.EnumerateFiles(path, "*.jpg", SearchOption.TopDirectoryOnly)
                     .Select(fn => new FileInfo(fn));
var fileDateGroups = files.GroupBy(fi => fi.LastWriteTime.Date);
foreach (var dateGroup in fileDateGroups)
{
    string dir = Path.Combine(@"C:\", dateGroup.Key.ToString("yyyyMMdd"));
    Directory.CreateDirectory(dir);
    foreach (var file in dateGroup)
    {
        string newPath = Path.Combine(dir, file.Name);
        File.Copy(file.FullName, newPath, true);
    }
}

编辑:如果要搜索多个文件扩展名,则需要手动过滤它们:

var allowed = new[]{ ".png", ".jpg" };
var files = Directory.EnumerateFiles(path, "*.*", SearchOption.TopDirectoryOnly)
                     .Where(fn => allowed.Contains(Path.GetExtension(fn)))
                     .Select(fn => new FileInfo(fn));
于 2012-11-12T15:51:04.283 回答
2

System.IO.FileInfo它提供了创建、删除和打开文件的方法,可用于此目的。要获取此文件的最后修改日期,您可以使用FileInfo.LastWriteTimewhich 返回DateTime

例子

string FileName = @"D:\Resources\Image001.jpg"; //Initializes a new string of name FileName as D:\..\Image001.jpg
FileInfo Information = new FileInfo(FileName); //Initializes a new instance of FileInfo to wrap a particular file 
DateTime DateModified = Information.LastWriteTime; //Initializes a new DateTime as Information.LastWriteTime

然后,您可以使用System.IO.Directory.CreateDirectory(string path)其名称来创建特定目录path

注意:您不能创建包含无效字符的目录,例如/, \, ?, :,*等...这意味着您不能创建名称目录11/12/2012

谢谢,
我希望你觉得这有帮助:)

于 2012-11-12T15:55:33.020 回答
1

肯定有办法的。查看 Path 和 Directory 类以迭代文件和目录以及创建新目录。一旦您进入文件夹,一些简单的谷歌搜索应该能够显示如何读取文件的修改日期,然后您只需要将它们排队以写入您的新位置。让我们知道这是否让您感到困惑,并尝试发布一些代码并展示您的一些努力。通常人们会更好,并且更少反对你:)

于 2012-11-12T15:50:51.273 回答