请教一个c#操作文件夹的问题,请大家指教! 我有个upfile文件夹有40万张图片,图片格式是按照时间格式排列的,如:2008113098.jpg 前面八位是保存图片时的日期后面两位是随机数,现在我想写个程序把这些图片按照时间的顺序放到制定的文件夹,如何完成?谢谢各位的指导。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 取文件夹下所有文件遍历,如果是jpg就取文件名前8个字符转成datetime,然后存到你想存的文件夹 string[] fileList = Directory.GetFiles(@"e:\temp\", "*.jpg"); List<int> nameList = new List<int>(); foreach (string fileName in fileList) { // 严格按日期的话,10位日期整数应该是 int nameList.Add(int.Parse(fileName.Substring(0, 10))); } nameList.Sort(); foreach (int val in nameList) { string fileName = @"d:\temp\" + val.ToString() + ".jpg"; File.Copy(fileName, @"c:\temp\" + fileName); } 二楼方法就可以,通过list或sortlist实现排序 40W耶,这么做估计要Out Of Memory! 算法:取出文件,以文件名为key,文件路径为content比较字符串(key)排序,然后以此存入你想要的文件夹 写了一个,按天来弄的,供参考,资源消耗要小些 public void FileAch() { string destDir = "PicAch"; string sourDir = "yourPicDir"; string dateStr; DateTime beginDate = new DateTime(2008, 1, 1); DateTime endDate = new DateTime(2008, 12, 31); int totalDays = (int)(endDate - beginDate).TotalDays; DirectoryInfo dirInfo = new DirectoryInfo(sourDir); for (int i = 0; i <= totalDays; i++) { dateStr = beginDate.AddDays(i).ToString("yyyyMMdd"); string dest = Path.Combine(destDir, dateStr); string tar = string.Format("{0}*.*", dateStr); FileInfo[] machedFiles = dirInfo.GetFiles(tar); if (Directory.Exists(dest) == false) { Directory.CreateDirectory(dest); } foreach (FileInfo fi in machedFiles) { fi.MoveTo(dest); // fi.CopyTo(dest); //or copy } } } 关于缩略图的问题? C# 怎么判断重复问题 vs2010 资源嵌入 不关联文件 com+怎么建和使用急需 在工具栏事件处理中调用菜单处理程序出错~请帮忙看看 救助:aspx页面A怎么执行ascx用户控件B中的方法 ???请问大家几个api在c#中的用法,小妹就这10分了,请大家不要计较! 选课系统,学生选择一门课程以后,如果显示出选择该课程的学生的详细名单? 正则问题 在一个大循环中,如何让系统获得消息? 图片绘制算法问题 看《浅谈“三层结构”原理与用意》遇到的问题
List<int> nameList = new List<int>();
foreach (string fileName in fileList)
{
// 严格按日期的话,10位日期整数应该是 int
nameList.Add(int.Parse(fileName.Substring(0, 10)));
}
nameList.Sort();
foreach (int val in nameList)
{
string fileName = @"d:\temp\" + val.ToString() + ".jpg";
File.Copy(fileName, @"c:\temp\" + fileName);
}
取出文件,以文件名为key,文件路径为content
比较字符串(key)排序,然后以此存入你想要的文件夹
{
string destDir = "PicAch";
string sourDir = "yourPicDir"; string dateStr; DateTime beginDate = new DateTime(2008, 1, 1);
DateTime endDate = new DateTime(2008, 12, 31); int totalDays = (int)(endDate - beginDate).TotalDays; DirectoryInfo dirInfo = new DirectoryInfo(sourDir); for (int i = 0; i <= totalDays; i++)
{
dateStr = beginDate.AddDays(i).ToString("yyyyMMdd");
string dest = Path.Combine(destDir, dateStr);
string tar = string.Format("{0}*.*", dateStr); FileInfo[] machedFiles = dirInfo.GetFiles(tar); if (Directory.Exists(dest) == false)
{
Directory.CreateDirectory(dest);
} foreach (FileInfo fi in machedFiles)
{
fi.MoveTo(dest);
// fi.CopyTo(dest); //or copy
}
}
}