asp.net中怎样复制文件?
做asp时,用FSO这个组件可以将一个文件夹中的所有内容复制到另一个位置。但是用asp.net怎样实现这样的功能呢? --------------------编程问答-------------------- public static void CopyDir(string srcPath,string aimPath){
// 检查目标目录是否以目录分割字符结束如果不是则添加之
if(aimPath[aimPath.Length-1] != Path.DirectorySeparatorChar)
aimPath += Path.DirectorySeparatorChar;
// 判断目标目录是否存在如果不存在则新建之
if(!Directory.Exists(aimPath)) Directory.CreateDirectory(aimPath);
// 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
// 如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法
// string[] fileList = Directory.GetFiles(srcPath);
string[] fileList = Directory.GetFileSystemEntries(srcPath);
// 遍历所有的文件和目录
foreach(string file in fileList){
// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
if(Directory.Exists(file))
CopyDir(file,aimPath+Path.GetFileName(file));
// 否则直接Copy文件
else
File.Copy(file,aimPath+Path.GetFileName(file),true);
}
}
--------------------编程问答-------------------- 详细内容直接参考 http://www.apsky.cn/article.asp?id=312&page=10 --------------------编程问答-------------------- 我记得是先把一个文件读到文件流,然后再把这个流写入文件流。 --------------------编程问答-------------------- 但是如果文件夹下还有子文件夹呢?
--------------------编程问答-------------------- bingchener(水滴) 给的代码中已经通过递归调用 将文件下的子文件夹也一起复制了
// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
if(Directory.Exists(file))
CopyDir(file,aimPath+Path.GetFileName(file));
就是这个 --------------------编程问答-------------------- 做一个递归函数,先把文件夹放在序列表 --------------------编程问答-------------------- ASP.Net 2.0(VB):
My.Computer.FileSystem.CopyDirectory(sourcePath, destinationPath, True)
一句话搞定 --------------------编程问答-------------------- C#怎么写呢? --------------------编程问答-------------------- File.Copy(源文件,目标文件)就行了! --------------------编程问答--------------------
+1 --------------------编程问答--------------------
using System;--------------------编程问答--------------------
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace F.Framework.WEB.Util
{
public static class DirectoryTools
{
public static void CreateDirectory(this string dirPath)
{
if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
}
}
public enum CopyType
{
File,
Directory
}
/// <summary>
/// 将fromDir文件夹下的所有文件及文件夹Copy至toDir下
/// </summary>
/// <param name="fromDir">来源(物理路径)</param>
/// <param name="toDir">目的地(物理路径)</param>
/// <param name="copyType">要复制的类型(注意:可以指定只复制文件夹结构,但指定复制文件则必定复制文件夹结构)</param>
/// <param name="noNeedCopyRules">不需要复制的规则(名字正则)</param>
/// <param name="isNoNeedCopy">是否存在不需要复制的文件或文件夹,true为不需要复制</param>
public static void Copy(string fromDir, string toDir, CopyType copyType, string noNeedCopyRules,bool isNoNeedCopy)
{
if (Directory.Exists(fromDir))
{
string[] childDir = Directory.GetDirectories(fromDir);
if (childDir != null && childDir.Length > 0)
{
foreach (string tS in childDir)
{
if (isNoNeedCopy && System.Text.RegularExpressions.Regex.IsMatch(tS, noNeedCopyRules))
{
continue;
}
Copy(tS, toDir + tS.Substring(fromDir.Length), copyType, noNeedCopyRules, isNoNeedCopy);
}
}
else
{
toDir.CreateDirectory();
}
if (copyType == CopyType.File)
{
string[] fi = Directory.GetFiles(fromDir);
if (fi != null && fi.Length > 0)
{
foreach (string f in fi)
{
if (isNoNeedCopy && System.Text.RegularExpressions.Regex.IsMatch(f, noNeedCopyRules))
{
continue;
}
string toFilePath = toDir + f.Substring(fromDir.Length);
if (File.Exists(toFilePath))
{
File.Delete(toFilePath);
}
File.Copy(f, toFilePath);
}
}
}
}
}
}
}
destinationpath参数可选择的,还有一个叫All....什么的它会自己判断有没有子目录的
补充:.NET技术 , ASP.NET