【问题标题】:Copy everything in a Directory and rename copied Files复制目录中的所有内容并重命名复制的文件
【发布时间】:2014-08-01 09:24:59
【问题描述】:

我尝试将文件夹中的所有内容复制到另一个文件夹,在本例中是从“sourceFolder”复制到“targetFolder”。

假设“sourceFolder”将有两个文件和 2 个子文件夹和一个附加文件: (我试着展示一下)

//sourceFolder
//├File1.txt
//├File2.txt
//├Subfolder1
//| └File3.txt
//|
//└Subfolder2
//  └File4.txt

现在我正在尝试将所有这些文件和子文件夹从“sourceFolder”复制到“targetFolder”,子文件夹的标题应相同,并且在文件上我将在“Filex.txt”前面添加“a” "(例如:"aFilex.txt") 这就是我想要得到的:

//targetFolder
//├aFile1.txt
//├aFile2.txt
//├Subfolder1
//| └aFile3.txt
//|
//└Subfolder2
//  └aFile4.txt

当前代码:

string[] sourceDirectoryFiles = Directory.GetFiles(sourceFolderTextbox.Text);
string[] sourceDirectorysubfolders = Directory.GetDirectories(targetFolderTextbox.Text);
string sourcedirectory = sourceFolderTextbox.Text;
string targetdirectory = targetFolderTextbox.Text;

    if (Directory.Exists(sourceDirectorysubfolders[0]))
    {
        foreach (string sourceFilePath in sourceDirectorysubfolders)
        {
                if (!Directory.Exists(sourceFilePath))
                    {
                        Directory.CreateDirectory(sourceFilePath.Replace(sourcedirectory, targetdirectory));
                    }
            }
    }

    foreach (string sourceFilePath in sourceDirectoryFiles )
    {
        string newsourcefilePath = String.Empty;
        string newfilePath = String.Empty;
        string FileName = System.IO.Path.GetFileName(sourceFilePath);
        newsourcefilePath = sourcedirectory + "\\a" + FileName;

        System.IO.File.Copy(sourceFilePath, newfilePath ,true)
    }

我希望,我问清楚了 :) 否则我会回答你的问题:)

我不擅长英语或编程,所以欢迎提出建设性的批评:)

【问题讨论】:

  • 您的样本不完整。即没有为 surceFolderFolders 或 surceFolderFiles 定义变量。
  • 我希望现在更好:)
  • 那么什么不起作用?您可能还想重命名所有变量以写出source 而不是surce
  • 目前它只将 sourceFolder 中的文件复制到 targetFolder 并创建子文件夹。但它不会复制子文件夹中的文件/子文件夹

标签: c# directory subdirectory


【解决方案1】:

已修改此SO Question 中的解决方案以满足您的需求。希望对您有所帮助。

void Copy(string sourcePath, string targetPath)
{

    foreach (string dirPath in Directory.GetDirectories(sourcePath, "*", SearchOption.AllDirectories))
        Directory.CreateDirectory(dirPath.Replace(sourcePath, targetPath));

    string newPath;
    foreach (string srcPath in Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories))
    {
        newPath = srcPath.Replace(sourcePath, targetPath);
        newPath = newPath.Insert(newPath.LastIndexOf("\\") + 1, "a"); //prefixing 'a'
        newPath = newPath +  ".example";
        File.Copy(srcPath, newPath, true);
    }
}

【讨论】:

  • 所以现在我是一个前缀,但是如果我想给它一个第二个扩展名(.txt.example)我问这个,因为我是一个新手,我想学习/理解
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
  • 2019-06-11
相关资源
最近更新 更多