求一个文件搜索的代码

vgy12304 2006-06-04 12:38:37
搜索可移动磁盘里所有的jpg文件,并且复制到c:\temp下

详细代码
...全文
598 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
叮当大雄 2006-06-14
  • 打赏
  • 举报
回复
中國程序員的bei ai
vgy12304 2006-06-14
  • 打赏
  • 举报
回复
还有这个
//得到可移动盘符

//工程引用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,我要使用盘符该如何用? 新手请各位老大帮帮忙不要笑话
viena 2006-06-13
  • 打赏
  • 举报
回复
//直接复制srcDir下及子文件夹下所有jpg到desdir
CopyDir(di.FullName,desDir+"\\"+di.Name);
这一句改为
CopyDir(di.FullName,desDir);
就可以了
vgy12304 2006-06-13
  • 打赏
  • 举报
回复
老大,我试过你留的这段代码:
//复制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文件夹根下吗?
xiaomatian 2006-06-13
  • 打赏
  • 举报
回复
看了一下,我觉得楼主是那种不喜欢动手的人。就这问题在这里讨论了半天,别人代码写得很清楚了自己做个改动都不会。


















VirtualDesktop 2006-06-07
  • 打赏
  • 举报
回复
那段代码只是翻译上面的啊
我自己有段VB的,但是不知道怎么翻译成C#
你等多会吧~
VirtualDesktop 2006-06-07
  • 打赏
  • 举报
回复
楼上正解,果然不同凡响
但是如果文件一多,就会很慢的
我原来打算用api findfirstfile findnextfile 的
vgy12304 2006-06-07
  • 打赏
  • 举报
回复
VirtualDesktop(吴滂) 兄弟不是我不给分,
而是问题还没有解决

你们的那个代码我早就有了,我的难点是要搜索文件夹包括子文件夹中的jpg,对所有可移动磁盘一次性搜索/复制。

你的代码根本不能解决问题。
viena 2006-06-07
  • 打赏
  • 举报
回复
//得到可移动盘符

//工程引用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;
}
viena 2006-06-07
  • 打赏
  • 举报
回复
//调用
CopyDir(可移动磁盘盘符(如"G:\"),"c:\temp");
viena 2006-06-07
  • 打赏
  • 举报
回复
//复制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);
}
}
guang1209 2006-06-07
  • 打赏
  • 举报
回复
连VB.NET的代码都不会看,还要求别人给你转成C#。shabi吧你。还有,那个什么“操作底层当然是winfrom了,弄个asp.net的”baichi呀,你是zhu一样,还winfrom,唉,baichi,winform 行吗,什么叫操作底层,晕死.................最底层是tmd汇编,你去操作看看。唉,浪费我的时间来教育你,就不用给分了。tmdshabi
vgy12304 2006-06-07
  • 打赏
  • 举报
回复
好的,我再继续加分
dgrwang 2006-06-06
  • 打赏
  • 举报
回复
mark
walkline 2006-06-06
  • 打赏
  • 举报
回复
negat 2006-06-06
  • 打赏
  • 举报
回复
Mark接分 学习
vgy12304 2006-06-06
  • 打赏
  • 举报
回复
搜索所有可移动磁盘时,要能搜索文件夹中的子文件,只搜索.jpg的文件,复制到c:\temp下



求完整的可运行的代码,我再加分,...等待中....
vgy12304 2006-06-05
  • 打赏
  • 举报
回复
搜索可移动磁盘时,要能搜索文件夹中的子文件,只搜索.jpg的文件

可移动磁盘不只一个,不过要一起搜索


分数不够的话,我再加
vgy12304 2006-06-05
  • 打赏
  • 举报
回复
老大,操作底层当然是winfrom了,弄个asp.net的。晕

我用不起来
VirtualDesktop 2006-06-05
  • 打赏
  • 举报
回复
//Server 服务器路径?
//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 ;
}
加载更多回复(8)

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧