如何通过文件扩展名引用文件夹中的文件

时间:2018-10-22 10:35:48

标签: c++ filenames file-extension

我正在传递一个表示文件夹路径的字符串作为构造函数的参数。

文件夹名称,其中的文件及其名称可以不同,但​​是两个文件的扩展名始终相同: *.caffemodel*.prototxt

如何使用扩展名引用指定目录中的这两个文件,而不必扫描整个文件夹以获取其全名?

作为示例,这是我的课程代码:

#include "NeuralClassifier.hpp"


NeuralClassifier::NeuralClassifier(std::string path)
{
  std::string modelName = path + "/*.caffemodel";
  std::string protoName = path + "/*.prototxt";
  cv::dnn::Net net;
  try {
    net = dnn::readNetFromCaffe(protoName, modelName);
  }
  catch (cv::Exception& e) {
    std::cerr << "Exception: " << e.what() << std::endl;
    if (net.empty())
    {
      std::cerr << "Can't load network by using the following files: " << std::endl;
      std::cerr << "prototxt:   " << protoName << std::endl;
      std::cerr << "caffemodel: " << modelName << std::endl;
      std::cerr << "bvlc_googlenet.caffemodel can be downloaded here:" << std::endl;
      std::cerr << "http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel" << std::endl;
      exit(-1);
    }
  }
}

1 个答案:

答案 0 :(得分:1)

在某些时候,操作系统需要知道您的应用程序要打开的确切文件名。在您的情况下,您可以指定一个通配符“ *”,该通配符不能匹配多个文件。

如果您只想打开与通配符匹配的第一个文件,则可以使用boost :: filesystem来简化文件处理:

Can I use a mask to iterate files in a directory with Boost?