天天看点

C# 批量复制文件

我是直接新建的一个aspx并在后台代码里写的,帖cs代码:

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.IO;

using System.Data.SqlClient;

public partial class page_FilesAsEasy : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        ArrayList arr = new ArrayList();

        SqlConnection conn = new SqlConnection();

        conn.ConnectionString = @"Data Source=.\;Initial Catalog=test;User ID=test;Password=test";

        conn.Open();

        string sqlcmd;

        sqlcmd = @"select * from test";

        SqlCommand cmd = new SqlCommand(sqlcmd, conn);

        SqlDataReader sdr = cmd.ExecuteReader();

        while (sdr.Read())

        {

            FileVO vo = new FileVO();

            vo.Client_Name = sdr["clientname"].ToString();

            vo.Client_ID = sdr["linkshop"].ToString();

            vo.Category = sdr["category"].ToString();

            vo.Filename = sdr["filename"].ToString();

            arr.Add(vo);

        }

        sdr.Close();

        conn.Dispose();

        Response.Write("开始拷贝文件

C# 批量复制文件

..<br/><br/>");

        Response.Flush();

        foreach (object var in arr)

            try

            {

                FileVO item = (FileVO)var;

                //这是经过重新命名的文件的path

                string from = @"E:\files\" + item.Client_ID.Trim() + "_" + item.Category.Trim() + "_" + item.Filename.Trim() + ".xls";

                string Category = string.Empty;

                switch (item.Category)

                {

                    case "1":

                        Category = "出售";

                        break;

                    case "2":

                        Category = "出租";

                    default:

                        Category = "购入";

                }

                //重新命名

                string to = @"F:\xlsdata\" + item.Client_Name.Trim() + "_" + Category.Trim() + ".xls";

                //拷贝文件

                File.Copy(from, to, true);

                //设置文件属性

                File.SetAttributes(to, FileAttributes.Normal);

            }

            catch (Exception ex)

                Response.Write(ex.Message + "<br/>");

                return;

        Response.Write("<br/>拷贝文件结束

C# 批量复制文件

..");

    }

    class FileVO

        private string _Client_ID;

        /// <summary>

        /// 客户代号

        /// </summary>

        public string Client_ID

            get { return _Client_ID; }

            set { _Client_ID = value; }

        private string _Category;

        /// 业务类型

        public string Category

            get { return _Category; }

            set { _Category = value; }

        private string _Filename;

        /// 文件名

        public string Filename

            get { return _Filename; }

            set { _Filename = value; }

        private string _Client_Name;

        /// 客户名称

        public string Client_Name

            get { return _Client_Name; }

            set { _Client_Name = value; }

}

注意:

    这里最关键是以下两句代码:

//拷贝文件

File.Copy(from, to, true);

//设置文件属性

File.SetAttributes(to, FileAttributes.Normal);

特别是第二句,我花了许多时间才找到的,如果你不加这句话,那会报以下错误:

The process cannot access the file 'F:\xlsdata\xxx_xxx.xls' because it is being used by another process.