On Windows is there an interface for Copying Folders?

前端 未结 7 633
陌清茗
陌清茗 2021-01-18 06:41

I want to copy folder A and paste to desktop.

I am currently using C++ so preferably an OO interface if available.

7条回答
  •  渐次进展
    2021-01-18 07:18

    Starting with Visual Studio 2015 you can use std::filesystem::copy which is even platform independent since it is available in implementations supporting >= C++17.

    #include 
    #include  // C++-standard filesystem header file in VS15, VS17.
    #include 
    namespace fs = std::experimental::filesystem; // experimental for VS15, VS17.
    
    /*! Copies all contents of path/to/source/directory to path/to/target/directory.
    */
    int main()
    {
        fs::path source = "path/to/source/directory";
        fs::path targetParent = "path/to/target";
        auto target = targetParent / source.filename(); // source.filename() returns "directory".
    
        try // If you want to avoid exception handling then use the error code overload of the following functions.
        {
            fs::create_directories(target); // Recursively create target directory if not existing.
            fs::copy(source, target, fs::copy_options::recursive);
        }
        catch (std::exception& e) // Not using fs::filesystem_error since std::bad_alloc can throw too.
        {
            std::cout << e.what();
        }
    }
    

    Change the behaviour of fs::copy with std::filesystem::copy_options. I've used std::filesystem::path::filename to retrieve the source directory name without having to type it manually.

提交回复
热议问题