我正在尝试从一个目录中读取多个文件,并在我的程序中使用它们,然后再转到该目录中的其他文件

I am trying to read in multiple files from a directory and use them in my program before moving on to other files in the directory

本文关键字:文件 然后 其他 程序 读取 一个 我的      更新时间:2023-10-16

我有一个目录,里面有188个文件,看起来像这样。

001_AU01_query.dat  
001_AU12_query.dat  
001_AU17_query.dat    
001_template.dat  
002_AU01_query.dat  
002_AU12_query.dat  
002_AU17_query.dat  
002_template.dat  

此操作一直重复到047_AU
我的程序需要做的是接收一个查询文件和相应的模板文件,即(使用001_AU01_query.dat和001_template.dat文件)并运行代码。然后将下一个001_AU文件与相同的模板文件一起使用。这将一直重复到047。

我可以手动放入一个查询文件和一个模板文件,效果很好。我只是不知道如何使用目录中的所有文件。

int main(int argc, char *argv[])
    {
      string outFileName = "";
      string templateFile = "";
      string queryData = "";
      ofstream outStream;
      Scanner inStreamTemp;
      Scanner inStreamQuery;
      calc calc;
      Utils::CheckArgs(3, argc, argv, "queryData templateFile outFileName");
      queryData = "data_project_part1/001_AU01_query.dat";   
      templateFile = "data_project_part1/001_template.dat";
      outFileName = "outFile";
      Utils::FileOpen(outStream, outFileName);
      if (Utils::FileDoesNotExist(queryData)||Utils::FileDoesNotExist(templateFile))
      {
        cout << "ERROR: query data file or template file name does not exist" << endl;
        exit(0);
      }
      inStreamQuery.openFile(queryData);
      inStreamTemp.openFile(templateFile);
      calc.initialize(inStreamQuery, inStreamTemp); 
      calc.runComputation(outStream);

      outStream << "Query File: " << queryData << "n" << "Template File: " << templateFile << "n" << "The ten closests neighbors are:n" << calc.toStringResults() << "n" << endl;
      outStream.flush();
      Utils::FileClose(outStream);
      return 0;
    }

一种方法是将文件名放在一个列表中,并在该列表中循环。您可以将这些名称复制并粘贴到文本编辑器中,保存在记事本中,逐行阅读并添加到列表中,从而将其放入列表中。

然后循环浏览该列表,并使用foreach循环

从每个列表中读取
相关文章: