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!!批量重命名复制成功!



转载:http://www.cnblogs.com/over140/archive/2007/12/07/986326.html

目录
相关文章
C#编程-27:复制文件和目录
C#编程-27:复制文件和目录
C#编程-27:复制文件和目录
C#编程-27:复制文件和目录
104 0
|
Web App开发 C#
|
9小时前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
|
9小时前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。
|
9小时前
|
存储 安全 网络安全
C#编程的安全性与加密技术
【4月更文挑战第21天】C#在.NET框架支持下,以其面向对象和高级特性成为安全软件开发的利器。本文探讨C#在安全加密领域的应用,包括使用System.Security.Cryptography库实现加密算法,利用SSL/TLS保障网络传输安全,进行身份验证,并强调编写安全代码的重要性。实际案例涵盖在线支付、企业应用和文件加密,展示了C#在应对安全挑战的同时,不断拓展其在该领域的潜力和未来前景。
|
9小时前
|
人工智能 C# 开发者
C#编程中的图形界面设计
【4月更文挑战第21天】本文探讨了C#在GUI设计中的应用,介绍了Windows Forms、WPF和UWP等常用框架,强调了简洁界面、响应式设计和数据绑定等最佳实践。通过实际案例,展示了C#在企业应用、游戏开发和移动应用中的GUI实现。随着技术发展,C#在GUI设计的未来将趋向于跨平台、更丰富的组件和AI集成,为开发者创造更多可能性。
|
9小时前
|
存储 算法 C#
C#编程与数据结构的结合
【4月更文挑战第21天】本文探讨了C#如何结合数据结构以构建高效软件,强调数据结构在C#中的重要性。C#作为面向对象的编程语言,提供内置数据结构如List、Array和Dictionary,同时也支持自定义数据结构。文章列举了C#实现数组、链表、栈、队列等基础数据结构的示例,并讨论了它们在排序、图算法和数据库访问等场景的应用。掌握C#数据结构有助于编写高性能、可维护的代码。
|
9小时前
|
开发框架 Linux C#
C#编程的跨平台应用
【4月更文挑战第21天】C#与.NET Core的结合使得跨平台应用开发变得高效便捷,提供统一编程模型和高性能。丰富的类库、活跃的社区支持及Visual Studio Code、Xamarin等工具强化了其优势。广泛应用在企业系统、云服务和游戏开发中,虽面临挑战,但随着技术进步,C#在跨平台开发领域的前景广阔。
|
9小时前
|
人工智能 C# 云计算
C#编程的未来发展趋向
【4月更文挑战第21天】C#编程未来将深化跨平台支持,强化云计算与容器技术集成,如.NET Core、Docker。在AI和ML领域,C#将提供更丰富框架,与AI芯片集成。语言和工具将持续创新,优化异步编程,如Task、async和await,提升多核性能。开源生态的壮大将吸引更多开发者,共创更多机遇。