我是直接新建的一个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; }
}
}
}
注意:
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);
特别是第二句,我花了许多时间才找到的,如果你不加这句话,那会报以下错误:
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.
本文转自博客园农民伯伯的博客,原文链接:C# 批量复制文件,如需转载请自行联系原博主。