通过网络c ++复制文件

时间:2017-09-15 01:50:16

标签: c++ file copy

我一直试图制作一个程序,通过网络复制文件,以便在我们的PC和笔记本之间同步游戏保存,只要其中一个更新。问题是当我运行程序时它只是“复制”而永远不会结束。但是,如果我在同一台PC上使用完全相同的文件,它立即执行,我也尝试通过网络发送一个文本,它工作得很好。有任何想法吗?这是我的代码:

void copyFile() {
char x;
path PC = "C:\\Users\\Luciano\\Documents\\Sports Interactive\\Football Manager Touch 2017\\games\\River.fmt";
path Notebook = "Z:\\games\\River.fmt";
std::time_t lastWriteTo=0, lastWriteFrom=0;
if(exists(PC)){lastWriteFrom = last_write_time(PC);}
if(exists(Notebook)){lastWriteTo = last_write_time(Notebook);}  

if (lastWriteFrom > lastWriteTo || !exists(Notebook)) {
    std::cout << "Hay que copiar de la PC a la notebook" << std::endl;
    std::cout << "Copiar Archivo? Este es de :" << (file_size(PC)/1024)/1024 << " Mb (S/N)" << std::endl;
    std::cin >> x;
    switch (x) {
    case 'S':
        std::cout << "Copiando Archivo..." << std::endl;
        try {
            copy_file(PC, Notebook, copy_option::overwrite_if_exists);
        }
        catch (filesystem_error &e) {
            std::cerr << e.what() << '\n';
        }
        break;
    case 's':
        std::cout << "Copiando Archivo..." << std::endl;
        try {
            copy_file(PC, Notebook, copy_option::overwrite_if_exists);
        }
        catch (filesystem_error &e) {
            std::cerr << e.what() << '\n';
        }
        break;
    default:
        std::cout << "Se ha cancelado la copia del archivo" << std::endl;
        break;
    }
}
else if(lastWriteFrom < lastWriteTo || !exists(PC)){
    std::cout << "Hay que copiar de la notebook a la PC" << std::endl;
    std::cout << "Copiar Archivo? Este es de :"<< (file_size(PC) / 1024) / 1024 <<"(S/N)" << std::endl;
    std::cin >> x;
    switch (x) {
    case 'S':
        std::cout << "Copiando Archivo..." << std::endl;
        try {
            copy_file(Notebook, PC, copy_option::overwrite_if_exists);
        }
        catch (filesystem_error &e) {
            std::cerr << e.what() << '\n';
        }
        break;
    case 's':
        std::cout << "Copiando Archivo..." << std::endl;
        try {
            copy_file(Notebook, PC, copy_option::overwrite_if_exists);
        }
        catch (filesystem_error &e) {
            std::cerr << e.what() << '\n';
        }
        break;
    default:
        std::cout << "Se ha cancelado la copia del archivo" << std::endl;
        break;
    }
}else {
    std::cout << "No es necesario la copia del archivo." << std::endl;
}

}

1 个答案:

答案 0 :(得分:0)

它有很多可能的东西,如果没有更多的信息,你已经尝试过,这里有一些潜在的东西:

  • 您有一个当前无法读取的锁定文件,而您的程序并不知道如何处理它。这在目录中当前正在运行的程序中很常见,或者如果其他程序调用{​​{3}}。您是否正在尝试写入的系统上运行游戏?
  • 您的读/写权限在任一系统上都搞乱了。
  • 你的网络或硬盘非常非常慢。
  • 你说你正在使用std::experimental::filesystem。这是实验性的,可能需要使用一些非平凡的直觉。

你说它保持&#34;永远复制。&#34;有网络流量吗?使用Wireshark或资源管理器(如果是Windows 10,请查看任务管理器。)