天天看點

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.