1

ファイルを含むディレクトリを削除するために、C ++に次のコードがあります。

void*  hFind = INVALID_HANDLE_VALUE;
        WIN32_FIND_DATA ffd;

        hFind = FindFirstFile((fullpath+"\\" + _docname + "\\"+"*").c_str(), &ffd);

        do //delete all the files in the directory
        {
            // check if it is a file
            if (!(ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
            {
                string s = (fullpath+_docname+"\\").append(ffd.cFileName);
                remove(s.c_str());
            }
        }
        while (FindNextFile(hFind, &ffd) != 0);
        removeDirectory(fullpath+"\\" + _docname);      
        FindClose(hFind);

問題は、ダバガーを閉じた後にのみディレクトリが実際に削除されることです。デバッグ中、ディレクトリにアクセスできませんが、まだ存在しているため、問題が発生します。フォルダを完全に削除するように修正する方法を知っていますか?

4

1 に答える 1

4

最後の 2 行を交換すると、これが修正される場合があります。ディレクトリを削除する前にハンドルを閉じます。

FindClose( hFind );
removeDirectory( fullpath + "\\" + _docname );       
于 2012-05-31T11:05:48.840 に答える