将多个文本文件从文件夹复制到C ++中的不同文件夹中

时间:2016-10-18 14:51:00

标签: c++ file directory

我制作了一个小型c ++程序,用于将多个文件从一个文件夹复制到其他文件夹中。例如:我在输入文件夹中有2个名为0.txt和1.txt的文件,我想将0.txt复制到名为1的文件夹和1.txt复制到名为2的文件夹(这些文件夹是先前制作的)。我的示例代码如下:

#include <iostream>
#include <windows.h>
#include <stdio.h>
#include<stdlib.h>
#include<fstream>
#include <sstream>
using namespace std;

#define upper_bound 1  // total number of folders starting from 0

std::string to_string(int i) {
   std::stringstream s;
   s << i;
   return s.str();
}

int main()
{

for( int i=0;i<=upper_bound;i++)
{
    string s = ".\\input";
    string s1=".\\";
    string p= ".txt";
    string Input = s;
    string CopiedFile = to_string(i)+p;
    string OutputFolder = s1+to_string(i);
    CopyFile(Input.c_str(), string(OutputFolder+CopiedFile).c_str(), TRUE);
}

} 

但是当我运行它时,没有任何东西被复制。这有什么不对吗?我该如何复制这些文件?

2 个答案:

答案 0 :(得分:0)

您正在尝试将文件“。\ input.txt”复制到“。\ 1 \ 1.txt

  1. input.txt可能不存在于当前目录中;尝试将此设置为绝对路径

  2. 您永远不会创建目录“1”(再次在随机工作目录中)。文档没有说它会为你创建目录,如果它不存在;所以你应该确保它确实&amp;如果没有,请创建它。

答案 1 :(得分:0)

这是函数的语法:

BOOL WINAPI CopyFile(
 _In_ LPCTSTR lpExistingFileName, // absolute input path. 
 _In_ LPCTSTR lpNewFileName, // absolute output path
 _In_ BOOL    bFailIfExists  // to determine if you want to prevent the 
                             //file from being replaced
);

您的输入路径必须是绝对的。您文件的输入路径不是绝对的。它只是处理文件的目录而不是确切的文件。

替换以下

        string Input = s;

<强>与

       string Input = s + String("\\") + to_string(i) + p; 
  

我在输入文件夹中有2个名为0.txt和1.txt的文件

所以你必须直接解决这两个文件。但是对于每次迭代,变量input只保存字符串".\\input",它是目录而不是绝对路径。