gpt4 book ai didi

c++ - 如何在C++中将文件夹从一个路径复制到另一个路径

转载 作者:搜寻专家 更新时间:2023-10-30 23:50:20 25 4
gpt4 key购买 nike

嗨...任何人都可以提供有关如何将文件夹从一个目录复制到另一个目录的代码吗...我可以通过此代码复制文件,但我不能一次复制整个文件夹.. .

    FILE *in, *out;
char ch;
if((in=fopen(sour->getfilepath(), "rb")) == NULL)
{
printf("Cannot open input file.\n");
getch();
exit(1);
}
if((out=fopen(dest->getfilepath(), "wb")) == NULL)
{
printf("Cannot open output file.\n");
getch();
exit(1);
}
while(!feof(in))
{
ch = getc(in);
if(ferror(in))
{
printf("Read Error");
clearerr(in);
break;
}
else
{
if(!feof(in)) putc(ch, out);
if(ferror(out))
{
printf("Write Error");
clearerr(out);
break;
}
}
}
fclose(in);
fclose(out);

最佳答案

如果你想用可移植的代码做到这一点,你应该考虑使用 Boost 文件系统库。对于稍差的可移植性,您可能可以使用 Posix 目录函数(opendir、readdir、closedir、chdir 等)。如果您根本不关心可移植性,您可能需要使用特定于系统的东西(例如在 Windows 上 FindFirstFile , FindNextFile, FindClose, SetCurrentDirectory).

就实际的文件复制而言,您的代码在现实生活中可能不会很好地工作——例如,您通常不会在您尝试打开文件的地方报告打开文件的问题。根据涉及的程序类型,您可以将其写入日志或在状态窗口中显示。即使您认为命令行的使用是理所当然的,它仍然几乎肯定会写入 stderr,而不是 stdout。

代码也几乎是纯 C 语言。在 C++ 中,您可以使其更紧凑:

std::ifstream in(sour->GetFilePath());
std::ofstream out(dest->GetFilePath());

out << in.rdbuf();

现在,这会忽略错误——有多种方法可以处理这些错误(例如,在 iostream 中启用异常),因此在不知道您真正想要什么的情况下很难显示代码。

关于c++ - 如何在C++中将文件夹从一个路径复制到另一个路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2234562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com