简体   繁体   中英

boost filesystem copy_file “successful” but no files copied

im having trouble figuring out why my files wont copy. Here's a brief portion of the code:

( dir_itr is directory_iterator & root is a path)

if (!(is_directory(dir_itr->path())))
{
    cout << "copying: " << dir_itr->path().filename() << endl;
    try
    {
        copy(dir_itr->path(), root);
        remove(dir_itr->path());
    } catch (filesystem_error& ex) {
        //more code

The results are as follows in the command window:

boost::filesystem::copy_file: The operation completed successfully: 
"C:\Documents and Settings\R\Desktop\New Folder\New Folder (2)\New Bitmap Image 3.bmp", 
"C:\Documents and Settings\R\Desktop\New Folder"

However no files are copied over.

I am basically just trying to move said file from folder c:\\x\\y\\file.file to c:\\x

I'm assuming why i cant move it is because i need a full file name and not just a directory or something? If this is the case, how do i convert path root to string so i can add a file name to it? (im gettin a thousand errors if i even try, they're so long i cant scroll all the way back up the window to see where it starts)

Perhaps boost::filesystem::system_complete can help:

(Sorry, I'm on my Mac and not windows but it shows a way to get the absolute path from a relative path). Good luck.

#include <iostream>
#include <boost/filesystem.hpp>

using namespace std;

int main(int argc, char *argv[]) {
    boost::filesystem::path cwd(".");
    boost::filesystem::path resolved = boost::filesystem::system_complete(cwd);

    std::cout << cwd << std::endl;
    std::cout << resolved << std::endl;
}

Outputs:

"."
"/private/var/folders/qw/x23nm9f11fxc45rgddb04n_w0000gn/T/CodeRunner/."

Got back to working on this and I added/changed the following:

try
{
    string temp = root.string() + "\\" + dir_itr->path().filename().string();
    path p(temp);
    copy(dir_itr->path(), p);
    remove(dir_itr->path());
//more code

And it seemed to work. I guess my assumption of needing to include the file name when copying was correct.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM