簡體   English   中英

將多個文本文件從一個文件夾復制到C ++中的不同文件夾中

[英]copy multiple text files from a folder into different folders in C++

我做了一個samll 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);
}

} 

但是當我運行它時,什么也不會被復制。 這有什么問題嗎? 我將如何復制這些文件?

您正在嘗試將文件“。\\ input.txt”復制到“。\\ 1 \\ 1.txt”

  1. input.txt在當前目錄中可能不存在; 嘗試將其設置為絕對路徑

  2. 您永遠不會創建目錄“ 1”(同樣在隨機工作目錄中)。 文檔沒有說如果不存在,它將為您創建目錄。 因此,您可能應該確保它可以執行,否則請創建它。

這是函數的語法:

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" ,這是目錄,而不是絕對路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM