{求助}读文件夹下所有的文件名以及修改时间、转移文件、重新命名的方法 哪位高手有从一个文件夹下面读取所有文件的个数和最后修改信息,然后把时间最早的几个文件(即保留一个修改时间最新的文件)转移到另外一个文件内,然后判断如果转移的文件已经存在,然后按照一定规则重新命名的方法?在下急等用,非常感谢,在线等! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 研究一下IO里面的Files类完全解决 File相关类,FileInfo等,看帮助 这是根据文件名排序的方法/// <summary> /// 快速排序算法 /// </summary> /// 快速排序为不稳定排序,时间复杂度O(nlog2n),为同数量级中最快的排序方法 /// <param name="arr">划分的数组</param> /// <param name="low">数组低端上标</param> /// <param name="high">数组高端下标</param> /// <returns></returns> static int Partition(FileInfo[] arr, int low, int high) { //进行一趟快速排序,返回中心轴记录位置 // arr[0] = arr[low]; FileInfo pivot = arr[low];//把中心轴置于arr[0] while (low < high) { while (low < high && arr[high].CreationTime <= pivot.CreationTime) --high; //将比中心轴记录小的移到低端 Swap(ref arr[high], ref arr[low]); while (low < high && arr[low].CreationTime >= pivot.CreationTime) ++low; Swap(ref arr[high], ref arr[low]); //将比中心轴记录大的移到高端 } arr[low] = pivot; //中心轴移到正确位置 return low; //返回中心轴位置 } static void Swap(ref FileInfo i, ref FileInfo j) { FileInfo t; t = i; i = j; j = t; } /// <summary> /// 快速排序算法 /// </summary> /// 快速排序为不稳定排序,时间复杂度O(nlog2n),为同数量级中最快的排序方法 /// <param name="arr">划分的数组</param> /// <param name="low">数组低端上标</param> /// <param name="high">数组高端下标</param> public static void QuickSort(FileInfo[] arr, int low, int high) { if (low <= high - 1)//当 arr[low,high]为空或只一个记录无需排序 { int pivot = Partition(arr, low, high); QuickSort(arr, low, pivot - 1); QuickSort(arr, pivot + 1, high); } } } TCHAR path[260] = _T("D:\\tmp"); TCHAR findFilter[260]; _tcscpy(findFilter, path); _tcscat(findFilter, _T("\\*")); WIN32_FIND_DATA fd; HANDLE hfind = FindFirstFile(findFilter, &fd); bool bFlag = true; while (hfind != INVALID_HANDLE_VALUE && bFlag) { if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0 //not dictory && _tcscmp(fd.cFileName, _T(".")) != 0 && _tcscmp(fd.cFileName, _T("..")) != 0) { // 把文件名和上次修改时间保存在一个list等容器里 // fd.cFileName, fd.ftLastWriteTime } FindNextFile(hfind, &fd); } if (hfind != INVALID_HANDLE_VALUE) { FindClose(hfind); hfind = NULL; } // 对保存的数据按修改时间排序,找到准备操作的文件。 // 然后用Movifile API把文件移动到其他目录 BOOL WINAPI MoveFile( __in LPCTSTR lpExistingFileName, __in LPCTSTR lpNewFileName File.SetCreationTime(f, createDataTime);File.SetLastWriteTime(f, modifyDataTime);File.SetLastAccessTime(f, visiteDataTime); IO下的File相关类,FileInfo,遍历操作! 在线等,c# formview控件使用!!! 求助Regex... 二维or 一维数组赋值 哪个c#大师,解释一下,这样一种现象,诡异得大过,你看过得所有,科幻片 vs2008发布的问题 显示隐藏窗体时,如何让它保持原来TextBox里的值? Dataedit在程序运行后显示周几的的地方出现“星星星星星星星” winform 中窗体的KeyDown事件为什么不能触发呀? 递归问题,请帮我看一下好吗? 在winform中可以设置DataGridView控件的背景色为透明吗? 高分求助webbrowser打印字体条码 关于vs2010专业版,工具箱添加组件,求帮忙解答!
这是根据文件名排序的方法
/// <summary>
/// 快速排序算法
/// </summary>
/// 快速排序为不稳定排序,时间复杂度O(nlog2n),为同数量级中最快的排序方法
/// <param name="arr">划分的数组</param>
/// <param name="low">数组低端上标</param>
/// <param name="high">数组高端下标</param>
/// <returns></returns>
static int Partition(FileInfo[] arr, int low, int high)
{
//进行一趟快速排序,返回中心轴记录位置
// arr[0] = arr[low];
FileInfo pivot = arr[low];//把中心轴置于arr[0]
while (low < high)
{
while (low < high && arr[high].CreationTime <= pivot.CreationTime)
--high;
//将比中心轴记录小的移到低端
Swap(ref arr[high], ref arr[low]);
while (low < high && arr[low].CreationTime >= pivot.CreationTime)
++low;
Swap(ref arr[high], ref arr[low]);
//将比中心轴记录大的移到高端
}
arr[low] = pivot; //中心轴移到正确位置
return low; //返回中心轴位置
}
static void Swap(ref FileInfo i, ref FileInfo j)
{
FileInfo t;
t = i;
i = j;
j = t;
}
/// <summary>
/// 快速排序算法
/// </summary>
/// 快速排序为不稳定排序,时间复杂度O(nlog2n),为同数量级中最快的排序方法
/// <param name="arr">划分的数组</param>
/// <param name="low">数组低端上标</param>
/// <param name="high">数组高端下标</param>
public static void QuickSort(FileInfo[] arr, int low, int high)
{
if (low <= high - 1)//当 arr[low,high]为空或只一个记录无需排序
{
int pivot = Partition(arr, low, high);
QuickSort(arr, low, pivot - 1);
QuickSort(arr, pivot + 1, high);
}
} }
_tcscpy(findFilter, path);
_tcscat(findFilter, _T("\\*")); WIN32_FIND_DATA fd;
HANDLE hfind = FindFirstFile(findFilter, &fd);
bool bFlag = true; while (hfind != INVALID_HANDLE_VALUE && bFlag)
{
if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0 //not dictory
&& _tcscmp(fd.cFileName, _T(".")) != 0
&& _tcscmp(fd.cFileName, _T("..")) != 0)
{
// 把文件名和上次修改时间保存在一个list等容器里
// fd.cFileName, fd.ftLastWriteTime
}
FindNextFile(hfind, &fd);
} if (hfind != INVALID_HANDLE_VALUE)
{
FindClose(hfind);
hfind = NULL;
}
// 对保存的数据按修改时间排序,找到准备操作的文件。
// 然后用Movifile API把文件移动到其他目录 BOOL WINAPI MoveFile(
__in LPCTSTR lpExistingFileName,
__in LPCTSTR lpNewFileName
File.SetLastWriteTime(f, modifyDataTime);
File.SetLastAccessTime(f, visiteDataTime);