C++ 正在等待创建文件

C++ 正在等待创建文件,c++,boost,C++,Boost,我正在尝试编写一个方法来监视目录中要创建的文件。此文件的扩展名为.complete。如果它不在那里,我想等待它出现。当它出现时,我想在扩展名之前提取文件名,删除.complete文件,进行一些处理,然后返回侦听新的.complete文件 这是我到目前为止所拥有的。我想我只需要帮助提取文件名,假设我正确地使用了通配符 while(1) { if (!boost::filesystem::exists("/var/test/*.complete")) { cout <&

我正在尝试编写一个方法来监视目录中要创建的文件。此文件的扩展名为
.complete
。如果它不在那里,我想等待它出现。当它出现时,我想在扩展名之前提取文件名,删除
.complete
文件,进行一些处理,然后返回侦听新的
.complete
文件

这是我到目前为止所拥有的。我想我只需要帮助提取文件名,假设我正确地使用了通配符

while(1) {
    if (!boost::filesystem::exists("/var/test/*.complete")) {
        cout << ".complete file does not exist" << endl;
    }
    else {

        //extract name of .complete file minus extension
        //do my processing
        system("rm *.complete");
    }
}
while(1){
如果(!boost::filesystem::存在(“/var/test/*.complete”)){

cout我不习惯提振,但只要简单几步,你就能得到你想要的

步骤1:读取目录(readdir或等效目录)

步骤2:您将获得目录中包含的所有文件作为常量字符*

步骤3:获取std::string而不是const char*

步骤4:fileName.find(“.complete”)

你明白了:)

我明白了

我使用了下面这个答案中的get_all函数,并将其添加到我的程序中

我不知道
boost::filesystem::exists
执行通配符扩展。你确定它执行通配符扩展吗?如果没有一些额外的步骤,它似乎不会执行。boost filesystem library能够在指定路径下迭代常规文件。它还能够提供一个常规文件的扩展名。这将更有意义。然后,y你已经有文件名了。