【发布时间】:2015-07-04 20:51:40
【问题描述】:
我在 C++ 中使用 Cfilefind 库,将最后输入的文件的名称获取到目录中。换句话说,在现有文件之后进入目录的文件。
CFileFind finder;
BOOL bWorking = finder.FindFile("*.png");
while (bWorking)
{
bWorking = finder.FindNextFile();
cout << (LPCTSTR) finder.GetFileName() << endl;
}
此代码无需下载不同的库即可工作。它为您提供当时存在的所有文件名。但是,它没有给他们我想要的顺序,因为我希望根据其进入目录的时间来订购它们。我应该使用该类中的什么方法以及如何使用?
这是图书馆,我提到过:
https://msdn.microsoft.com/en-US/library/ww9sye6t(v=vs.80).aspx
我也使用这种方法来获取 int pro value 的值,但是它可能会按字母顺序给出条目而不是最后一个条目值:
string processName(int pro)
{
int count=0;
string name;
CFileFind finder;
BOOL bWorking = finder.FindFile("*.png");
while (bWorking)
{
bWorking = finder.FindNextFile();
count = count + 1;
if (count == pro){
name = (LPCTSTR) finder.GetFileName();
bWorking=false;
}
}
return name;
}
我写的另一种有用的启发式方法是获取该文件夹中存在的文件数量,我通过这种方式查看更改,但它根本不能解决我的问题。如果可能的话,你也可以提出一个算法,
【问题讨论】:
-
作为另一种建议的方式,我可以获取值并将它们存储在一个数组中,当该数组的大小发生变化时(当另一个文件进入时),我可以将它们存储在另一个数组中,这样我就可以查看差异值,但是对于大量文件来说,比较前一个数组中不存在的文件会花费太多时间。
标签: c++ file winapi mfc directory