c#如何复制文件夹到新目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#如何复制文件夹到新目录相关的知识,希望对你有一定的参考价值。

C#中复制指定文件夹下的所有文件夹目录到指定文件夹中的方法。

public static void CopyFolder(string strFromPath,string strToPath)

//如果源文件夹不存在,则创建
if (!Directory.Exists(strFromPath))

Directory.CreateDirectory(strFromPath);

//取得要拷贝的文件夹名
string strFolderName = strFromPath.Substring(strFromPath.LastIndexOf("\\") +
1,strFromPath.Length - strFromPath.LastIndexOf("\\") - 1);
//如果目标文件夹中没有源文件夹则在目标文件夹中创建源文件夹
if (!Directory.Exists(strToPath + "\\" + strFolderName))

Directory.CreateDirectory(strToPath + "\\" + strFolderName);

//创建数组保存源文件夹下的文件名
string[] strFiles = Directory.GetFiles(strFromPath);
//循环拷贝文件
for(int i = 0;i < strFiles.Length;i++)

//取得拷贝的文件名,只取文件名,地址截掉。
string strFileName = strFiles[i].Substring(strFiles[i].LastIndexOf("\\") + 1,strFiles[i].Length - strFiles[i].LastIndexOf("\\") - 1);
//开始拷贝文件,true表示覆盖同名文件
File.Copy(strFiles[i],strToPath + "\\" + strFolderName + "\\" + strFileName,true);

//创建DirectoryInfo实例
DirectoryInfo dirInfo = new DirectoryInfo(strFromPath);
//取得源文件夹下的所有子文件夹名称
DirectoryInfo[] ZiPath = dirInfo.GetDirectories();
for (int j = 0;j < ZiPath.Length;j++)

//获取所有子文件夹名
string strZiPath = strFromPath + "\\" + ZiPath[j].ToString();
//把得到的子文件夹当成新的源文件夹,从头开始新一轮的拷贝
CopyFolder(strZiPath,strToPath + "\\" + strFolderName);

参考技术A 使用System.IO命名空间下的Directory和DirectoryInfo这两个东东,复制文件夹就是获取文件夹信息,指定路径,创建文件夹就可以了,试一下,有问题请追问或是百度Hi上留言,希望对你有帮助本回答被提问者和网友采纳 参考技术B http://wenku.baidu.com/link?url=M9HS4TFiW_2J11QgK-N_u97TQ3-7mcAMlg_uhOX7CRfK4LzU2vPF3X1H0ViVaJBnvlsFhwmgUobpkezqjDQXPeZ1RCwS9FpgBYY1Xx190t7
链接中有详细的代码和实现过程!
参考技术C 用rename 或者move 参考技术D 有一个类,叫D什么的,你查下MSDN就出来鸟

C#如何将模板对象数据复制到新对象,但没有地址[重复]

【中文标题】C#如何将模板对象数据复制到新对象,但没有地址[重复]【英文标题】:C# how to copy templet object data to a new object , but no the address [duplicate] 【发布时间】:2013-12-02 03:56:06 【问题描述】:

我基本上想定义一个模板数据对象, 并使用这个模板数据对象来分配新的数据对象。 然后将不同的值赋给新的数据对象。

代码如下:

public class sData

    public  string name;
    public  int Number;
    public sData(string name,int Number)
    
        this.poster_path = path;
        this.Number = Number;
    


sData templet= new sData("aaaa","0");

sData realData1 = new sData();
realData1=templet;
realData1.Number=100;

但在realData1.Number=100;之后

我发现templet.Number 改为100

我怎样才能把100realData1,而不给templet

【问题讨论】:

【参考方案1】:

我是否正确地说您想设置一些工厂对象,该对象将创建具有预定义值集的数据对象(即模板)?

您上面的代码不会这样做。您只创建了一个对象,但对它有两个不同的引用。

也许这样的事情会满足你的需要:

public class sData

    public string name;
    public int Number;
    public sData(string name,int Number)
    
        this.poster_path = path; //copied from question, this might need updating.
        this.Number = Number;
    

    sData CreateCopy()
    
        return new sData(name, number);
    




sData template = new sData("aaaa","0");

sData realData1 = template.CreateCopy();
realData1.Number=100;

这仍然感觉不是很优雅,也许工厂和数据对象的单独类会更合适,但如果没有更多上下文就很难说。

【讨论】:

我知道这样,但是大类是由 EF 生成的,不应该编辑。到目前为止,我只是将所有列复制到每个新对象....【参考方案2】:

您将templet 的对象变量分配给realData1,这样您仍然在内存中引用同一个对象:

realData1=templet;

您可以分配值而不是对象本身:

realData1.name = templet.name;
realData1.Number = templet.Number;

【讨论】:

【参考方案3】:

类是引用类型,类sDatarealData1templet的引用变量指向堆中相同的内存位置,所以templet 被值 realData1 覆盖。

【讨论】:

以上是关于c#如何复制文件夹到新目录的主要内容,如果未能解决你的问题,请参考以下文章

列出所有子目录中的所有 *.jpg 文件并复制到新文件夹

Python:读取文本文件并将其中列出的目录复制/粘贴到新目录

c# 移动单个文件到文件夹中

将文件复制到新创建的目录

Unix-在重命名文件时将相同文件从多个目录复制到新目录

C#如何将模板对象数据复制到新对象,但没有地址[重复]