abr*_*pin -1 c# file file-management
有没有办法获取所有文件(在特定日期最后修改),并将它们保存到一个新文件夹(具有特定日期的名称).
示例文件:
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
Run Code Online (Sandbox Code Playgroud)
输出应该是:
C:/20121112/
Image001.jpg
Image002.jpg
Image004.jpg
C:/20121113
Image003.jpg
Run Code Online (Sandbox Code Playgroud)
我目前正在使用以下语法:
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);
Run Code Online (Sandbox Code Playgroud)
但是我没有如何保存将var文件保存到另一个文件夹名称.
也许:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:如果要搜索多个文件扩展名,则需要手动过滤它们:
var allowed = new[]{ ".png", ".jpg" };
var files = Directory.EnumerateFiles(path, "*.*", SearchOption.TopDirectoryOnly)
.Where(fn => allowed.Contains(Path.GetExtension(fn)))
.Select(fn => new FileInfo(fn));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3811 次 |
| 最近记录: |