asp.net中怎样复制文件?

dyongmin 2007-05-05 08:37:13
做asp时,用FSO这个组件可以将一个文件夹中的所有内容复制到另一个位置。但是用
asp.net怎样实现这样的功能呢?
...全文
872 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cosmo 2011-09-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 chengguangsheng 的回复:]
引用 7 楼 lishewen 的回复:
ASP.Net 2.0(VB):
My.Computer.FileSystem.CopyDirectory(sourcePath, destinationPath, True)
一句话搞定

+1
[/Quote]
destinationpath参数可选择的,还有一个叫All....什么的它会自己判断有没有子目录的
  • 打赏
  • 举报
回复
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);
}
}
}
}
}
}
}
Cosmo 2011-09-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lishewen 的回复:]
ASP.Net 2.0(VB):
My.Computer.FileSystem.CopyDirectory(sourcePath, destinationPath, True)
一句话搞定
[/Quote]
+1
run_ant 2007-05-05
  • 打赏
  • 举报
回复
做一个递归函数,先把文件夹放在序列表
_-_-_-_- 2007-05-05
  • 打赏
  • 举报
回复
bingchener(水滴) 给的代码中已经通过递归调用 将文件下的子文件夹也一起复制了

// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
if(Directory.Exists(file))
CopyDir(file,aimPath+Path.GetFileName(file));

就是这个
dyongmin 2007-05-05
  • 打赏
  • 举报
回复
但是如果文件夹下还有子文件夹呢?






双黑in上海 2007-05-05
  • 打赏
  • 举报
回复
我记得是先把一个文件读到文件流,然后再把这个流写入文件流。
bingchener 2007-05-05
  • 打赏
  • 举报
回复
详细内容直接参考 http://www.apsky.cn/article.asp?id=312&page=10
bingchener 2007-05-05
  • 打赏
  • 举报
回复
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);
}
}
witer666 2007-05-05
  • 打赏
  • 举报
回复
File.Copy(源文件,目标文件)就行了!
dyongmin 2007-05-05
  • 打赏
  • 举报
回复
C#怎么写呢?
lishewen 2007-05-05
  • 打赏
  • 举报
回复
ASP.Net 2.0(VB):
My.Computer.FileSystem.CopyDirectory(sourcePath, destinationPath, True)
一句话搞定

62,075

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧