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
我怎样才能把100
给realData1
,而不给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】:类是引用类型,类sDatarealData1和templet的引用变量指向堆中相同的内存位置,所以templet 被值 realData1 覆盖。
【讨论】:
以上是关于c#如何复制文件夹到新目录的主要内容,如果未能解决你的问题,请参考以下文章