当前位置:编程学习 > C#/ASP.NET >>

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(源文件,目标文件)就行了! --------------------编程问答--------------------
引用 7 楼 lishewen 的回复:
ASP.Net   2.0(VB):
My.Computer.FileSystem.CopyDirectory(sourcePath,   destinationPath,   True)
一句话搞定

+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);
                        }
                    }
                }
            }
        }
    }
}
--------------------编程问答--------------------
引用 10 楼 chengguangsheng 的回复:
引用 7 楼 lishewen 的回复:
ASP.Net 2.0(VB):
My.Computer.FileSystem.CopyDirectory(sourcePath, destinationPath, True)
一句话搞定

+1

destinationpath参数可选择的,还有一个叫All....什么的它会自己判断有没有子目录的
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,