UpFilesDir = "upload/"Sub CreateFilesTable() Dim theFile() As FileInfo Dim theFolder As DirectoryInfo Dim TruePath As String = Server.MapPath(UpFilesDir) theFolder = New DirectoryInfo(TruePath) If Directory.Exists(TruePath) = False Then Response.Write("没有找到文件夹!") Exit Sub End If theFile = FilterForFiles(theFolder.GetFiles()) Dim tmpFile As FileInfo For Each tmpFile In theFile system.io.file.copy("原文件路径","新文件路径") Next End Sub Function FilterForFiles(ByVal TmpFiles() As FileInfo) As FileInfo() Dim newTmpFiles As New ArrayList(TmpFiles.Length) Dim i As Integer For i = 0 To TmpFiles.Length - 1 If Path.GetExtension(TmpFiles(i).Name.ToLower) = ".jpg" OrElse _ Path.GetExtension(TmpFiles(i).Name.ToLower) = ".jpeg" OrElse _ Path.GetExtension(TmpFiles(i).Name.ToLower) = ".png" OrElse _ Path.GetExtension(TmpFiles(i).Name.ToLower) = ".bmp" OrElse _ Path.GetExtension(TmpFiles(i).Name.ToLower) = ".gif" Then newTmpFiles.Add(TmpFiles(i)) End If Next Return CType(newTmpFiles.ToArray(GetType(FileInfo)), FileInfo()) End Function
至于copy,有File.Copy方法来完成。
可以参看
http://blog.csdn.net/knight94/archive/2006/03/27/640153.aspx
http://community.csdn.net/Expert/TopicView3.asp?id=4756152至于如何获得移动硬盘的盘符,可以参看
http://blog.csdn.net/knight94/archive/2006/03/31/645367.aspx
Dim theFile() As FileInfo
Dim theFolder As DirectoryInfo
Dim TruePath As String = Server.MapPath(UpFilesDir)
theFolder = New DirectoryInfo(TruePath) If Directory.Exists(TruePath) = False Then
Response.Write("没有找到文件夹!")
Exit Sub
End If theFile = FilterForFiles(theFolder.GetFiles()) Dim tmpFile As FileInfo For Each tmpFile In theFile
system.io.file.copy("原文件路径","新文件路径")
Next End Sub
Function FilterForFiles(ByVal TmpFiles() As FileInfo) As FileInfo()
Dim newTmpFiles As New ArrayList(TmpFiles.Length)
Dim i As Integer
For i = 0 To TmpFiles.Length - 1
If Path.GetExtension(TmpFiles(i).Name.ToLower) = ".jpg" OrElse _
Path.GetExtension(TmpFiles(i).Name.ToLower) = ".jpeg" OrElse _
Path.GetExtension(TmpFiles(i).Name.ToLower) = ".png" OrElse _
Path.GetExtension(TmpFiles(i).Name.ToLower) = ".bmp" OrElse _
Path.GetExtension(TmpFiles(i).Name.ToLower) = ".gif" Then
newTmpFiles.Add(TmpFiles(i))
End If
Next
Return CType(newTmpFiles.ToArray(GetType(FileInfo)), FileInfo())
End Function
{
FileInfo[] theFile;
DirectoryInfo theFolder;
string TruePath = Server.MapPath(UpFilesDir);
theFolder =new DirectoryInfo (TruePath); if (System.IO.Directory.Exists(TruePath) == false)
{
Response.Write("没有找到文件夹!");
return;
} theFile = FilterForFiles(theFolder.GetFiles()); foreach (FileInfo tmpFile in theFile)
{
System.IO.File.Copy ("原文件路径","新文件路径");
}}
public FileInfo[] FilterForFiles(FileInfo []TmpFiles )
{
System.Collections.ArrayList newTmpFiles = new System.Collections.ArrayList(TmpFiles.Length);
int i ;
for( i = 0;i<=TmpFiles.Length - 1;i++)
{
if( Path.GetExtension(TmpFiles[i].Name.ToLower()) == ".jpg" ||
Path.GetExtension(TmpFiles[i].Name.ToLower()) == ".jpeg" ||
Path.GetExtension(TmpFiles[i].Name.ToLower()) ==".png" ||
Path.GetExtension(TmpFiles[i].Name.ToLower()) == ".bmp" ||
Path.GetExtension(TmpFiles[i].Name.ToLower()) == ".gif")
{
newTmpFiles.Add(TmpFiles[i]);
} }
return newTmpFiles; //这里不知道怎么转
}
//Response 客户页,晕,是ASP.NET
string UpFilesDir = "upload/";public void CreateFilesTable()
{
FileInfo[] theFile;
DirectoryInfo theFolder;
string TruePath = Server.MapPath(UpFilesDir);
theFolder =new DirectoryInfo (TruePath); if (System.IO.Directory.Exists(TruePath) == false)
{
Response.Write("没有找到文件夹!");
return;
} theFile = FilterForFiles(theFolder.GetFiles()); foreach (FileInfo tmpFile in theFile)
{
System.IO.File.Copy ("原文件路径","新文件路径");
}}
public FileInfo[] FilterForFiles(FileInfo []TmpFiles )
{
//System.Collections.ArrayList newTmpFiles = new System.Collections.ArrayList(TmpFiles.Length);
int i ;
FileInfo[] files;
files=new FileInfo[TmpFiles.Length]; for( i = 0;i<=TmpFiles.Length - 1;i++)
{
if( Path.GetExtension(TmpFiles[i].Name.ToLower()) == ".jpg" ||
Path.GetExtension(TmpFiles[i].Name.ToLower()) == ".jpeg" ||
Path.GetExtension(TmpFiles[i].Name.ToLower()) ==".png" ||
Path.GetExtension(TmpFiles[i].Name.ToLower()) == ".bmp" ||
Path.GetExtension(TmpFiles[i].Name.ToLower()) == ".gif")
{
//newTmpFiles.Add(TmpFiles[i]);
files[i]=TmpFiles[i]; } }
return files ;
}
分数不够的话,我再加
string UpFilesDir = "upload/";//你要搜索的路径public void CreateFilesTable()
{
FileInfo[] theFile;
DirectoryInfo theFolder;
//string TruePath = Server.MapPath(UpFilesDir);
theFolder = new DirectoryInfo(UpFilesDir); if (System.IO.Directory.Exists(UpFilesDir) == false)
{
System.Windows.Forms.MessageBox.Show("没有找到文件夹!");
return;
} theFile = FilterForFiles(theFolder.GetFiles()); foreach (FileInfo tmpFile in theFile)
{
System.IO.File.Copy("原文件路径", "新文件路径");//把"原文件路径" "新文件路径"自己替换
}}
public FileInfo[] FilterForFiles(FileInfo []TmpFiles )
{
//System.Collections.ArrayList newTmpFiles = new System.Collections.ArrayList(TmpFiles.Length);
int i ;
FileInfo[] files;
files=new FileInfo[TmpFiles.Length]; for( i = 0;i<=TmpFiles.Length - 1;i++)
{
if( Path.GetExtension(TmpFiles[i].Name.ToLower()) == ".jpg" ||
Path.GetExtension(TmpFiles[i].Name.ToLower()) == ".jpeg" ||
Path.GetExtension(TmpFiles[i].Name.ToLower()) ==".png" ||
Path.GetExtension(TmpFiles[i].Name.ToLower()) == ".bmp" ||
Path.GetExtension(TmpFiles[i].Name.ToLower()) == ".gif")
{
//newTmpFiles.Add(TmpFiles[i]);
files[i]=TmpFiles[i]; } }
return files ;
}
||
Path.GetExtension(TmpFiles[i].Name.ToLower()) ==".png" ||
Path.GetExtension(TmpFiles[i].Name.ToLower()) == ".bmp" ||
Path.GetExtension(TmpFiles[i].Name.ToLower()) == ".gif"
而是问题还没有解决你们的那个代码我早就有了,我的难点是要搜索文件夹包括子文件夹中的jpg,对所有可移动磁盘一次性搜索/复制。你的代码根本不能解决问题。
我自己有段VB的,但是不知道怎么翻译成C#
你等多会吧~
public static void CopyDir(string srcDir,string desDir)
{
if(!Directory.Exists(desDir))
{
Directory.CreateDirectory(desDir);
}
DirectoryInfo rootDi = new DirectoryInfo(srcDir); //遍历文件
FileInfo[] afi = rootDi.GetFiles();
for(int i=0;i<afi.Length;i++)
{
FileInfo fi = afi[i];
if(Path.GetExtension(fi.Name.ToLower) = ".jpg")
{
fi.CopyTo(desDir+"\\"+fi.Name,true);
}
} //遍历子目录,递归调用以copy子目录
DirectoryInfo[] adi = rootDi.GetDirectories();
for(int i=0;i<adi.Length;i++)
{
DirectoryInfo di = adi[i];
CopyDir(di.FullName,desDir+"\\"+di.Name);
}
}
CopyDir(可移动磁盘盘符(如"G:\"),"c:\temp");
public enum DRIVE_TYPE:int
{
REMOVABLE = 2,
LOCALDISK = 3,
NETDRIVE = 4,
CDROM = 5,
}
public ArrayList GetAllNetDriveName() {
string strQuery = string.Format( "SELECT * From Win32_LogicalDisk WHERE DriveType = {0}", (int)( DRIVE_TYPE.NETDRIVE) );
ManagementObjectSearcher query = new ManagementObjectSearcher(strQuery);
ManagementObjectCollection queryCollection = query.Get();
ArrayList arrNetDriveName = new ArrayList();
foreach ( ManagementObject mo in queryCollection)
arrNetDriveName.Add( mo["Name"].ToString() );
return arrNetDriveName;
}
但是如果文件一多,就会很慢的
我原来打算用api findfirstfile findnextfile 的
//复制srcDir文件夹下的jpg文件到desDir文件夹(含所有子文件夹)
public static void CopyDir(string srcDir,string desDir)
{
if(!Directory.Exists(desDir))
{
Directory.CreateDirectory(desDir);
}
DirectoryInfo rootDi = new DirectoryInfo(srcDir);//遍历文件
FileInfo[] afi = rootDi.GetFiles();
for(int i=0;i<afi.Length;i++)
{
FileInfo fi = afi[i];
if(Path.GetExtension(fi.Name.ToLower) = ".jpg")
{
fi.CopyTo(desDir+"\\"+fi.Name,true);
}
}//遍历子目录,递归调用以copy子目录
DirectoryInfo[] adi = rootDi.GetDirectories();
for(int i=0;i<adi.Length;i++)
{
DirectoryInfo di = adi[i];
CopyDir(di.FullName,desDir+"\\"+di.Name);
}
}
很不错,只不过也把srcDir文件夹下的子文件夹复制到desDir文件夹了,可以再改一下,直接复制srcDir下及子文件夹下所有jpg到desdir文件夹根下吗?
CopyDir(di.FullName,desDir+"\\"+di.Name);
这一句改为
CopyDir(di.FullName,desDir);
就可以了
//得到可移动盘符//工程引用Windows.Management。
public enum DRIVE_TYPE:int
{
REMOVABLE = 2,
LOCALDISK = 3,
NETDRIVE = 4,
CDROM = 5,
}
public ArrayList GetAllNetDriveName() {
string strQuery = string.Format( "SELECT * From Win32_LogicalDisk WHERE DriveType = {0}", (int)( DRIVE_TYPE.NETDRIVE) );
ManagementObjectSearcher query = new ManagementObjectSearcher(strQuery);
ManagementObjectCollection queryCollection = query.Get();
ArrayList arrNetDriveName = new ArrayList();
foreach ( ManagementObject mo in queryCollection)
arrNetDriveName.Add( mo["Name"].ToString() );
return arrNetDriveName;
}
我用arrNetDriveName.count 得到的数据为0,我要使用盘符该如何用? 新手请各位老大帮帮忙不要笑话