C# 批量复制文件

前言
    项目之外,公司要求把客户上传的xls数据文件按条件拷贝一份出来,可是这些上传的文件都已经重新命过名,不过还好有上传的记录,包括文件新命名的规则.于是只需要写一个程序来批量获得这些被重新命过名的文件然后拷贝出来就行了.

正题
    我是直接新建的一个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(
" 开始拷贝文件..<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 
=   " 出租 " ;
                        
break ;
                    
default :
                        Category 
=   " 购入 " ;
                        
break ;
                }
                
// 重新命名
                 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/>拷贝文件结束.. " );
    }
    
class  FileVO
    {
        
private   string  _Client_ID;
        
///   <summary>
        
///  客户代号
        
///   </summary>
         public   string  Client_ID
        {
            
get  {  return  _Client_ID; }
            
set  { _Client_ID  =  value; }
        }

        
private   string  _Category;
        
///   <summary>
        
///  业务类型
        
///   </summary>
         public   string  Category
        {
            
get  {  return  _Category; }
            
set  { _Category  =  value; }
        }

        
private   string  _Filename;
        
///   <summary>
        
///  文件名
        
///   </summary>
         public   string  Filename
        {
            
get  {  return  _Filename; }
            
set  { _Filename  =  value; }
        }

        
private   string  _Client_Name;
        
///   <summary>
        
///  客户名称
        
///   </summary>
         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.


OK!!批量重命名复制成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值