【问题标题】:Searching a directory, finding the last entered file name in C++搜索目录,在 C++ 中找到最后输入的文件名
【发布时间】: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


【解决方案1】:

使用您提供的链接中记录的CfileFind::GetCreationTime() 获取每个文件的创建时间,并按创建时间对文件进行排序。

【讨论】:

  • 是的,你可能是对的,但是它需要两个参数,我是 C++ 新手,它需要什么?能给我举个例子吗?或者我应该如何实现它?
  • 您提供的文档链接解释了它需要哪些参数,甚至还有一个示例链接。作为一名新的 C++ 开发人员,您要学习的最重要的技能是如何阅读和理解技术文档。祝你好运。
  • 我问的原因是(// pTimeStamp:指向包含文件创建时间的 FILETIME 结构的指针。// refTime 对 CTime 对象的引用。)所以我为什么要输入time里面那个方法,获取当前文件夹的入口时间,这是什么原因??
  • 该函数要求一个指向 FILETIME 的指针或对函数将创建时间放入的 refTime 结构的引用。它不要求创建时间本身,它会在您传递其指针或引用的结构中返回文件的创建时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-27
  • 2023-04-09
  • 2012-04-28
  • 2018-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多