怎样有选择地获取某个目录下的某些类型文件
主 题: 怎样有选择地获取某个目录下的某些类型文件?
作 者: qiuji (忆秋季)
等 级: ^^^^^
信 誉 值: 99
所属论坛: .NET技术 C#
问题点数: 50
回复次数: 14
发表时间: 2003-9-14 10:54:32
我用
DirectoryInfo dir=new DirectoryInfo("C:\\");
FileInfo [] strfile=dir.GetFiles();
获取了该目录下的所有文件。
请问:怎么获取该目录下的多种类型的文件(不只一种类型),例如*.mp3
,*.avi
,*.asf
?
回复人: net_lover(孟子E章) ( 五星(高级)) 信誉:115 2003-9-14 11:01:51 得分:0
Filter 属性
回复人: freecs(红茗) ( 五级(中级)) 信誉:100 2003-9-14 11:03:09 得分:3
那你就用 后缀(例如mp3) 来判断,
截取最后一个 .后的字符串
回复人: net_lover(孟子E章) ( 五星(高级)) 信誉:115 2003-9-14 11:05:50 得分:0
sorry看错了
回复人: qiuji(忆秋季) ( 五级(中级)) 信誉:99 2003-9-14 11:06:52 得分:0
获取一种类型我会,但是我要获取多种类型,怎么办?
回复人: chinchy(人民需要人民币) ( 两星(中级)) 信誉:140 2003-9-14 11:13:59 得分:0
多次调用GetFiles,每次取一样不就行了,没别的办法
回复人: net_lover(孟子E章) ( 五星(高级)) 信誉:115 2003-9-14 11:16:50 得分:8
DirectoryInfo di = new DirectoryInfo("c:\\");
FileInfo[] fiArr = di.GetFiles();
foreach (FileInfo fri in fiArr)
{
//过虑:
//if(扩展名字是mp3或者avi等)
label1.Text+=(fri.Name);
}
回复人: cgmx(风凌沙扬) ( 四级(中级)) 信誉:98 2003-9-14 11:24:35 得分:6
DirectoryInfo di = new DirectoryInfo("c:\\");
FileInfo[] fiArr = di.GetFiles();
foreach (FileInfo fri in fiArr)
{
//过虑:
if(fri.Extension == ".mp3" || fri.Extension == ".avi")
label1.Text+=(fri.Name);
}
回复人: qiuji(忆秋季) ( 五级(中级)) 信誉:99 2003-9-14 11:42:26 得分:0
获取某一种类型可以这样:
FileInfo [] strfile=dir.GetFiles("*.mp3");
能不能在此处获取多种类型?
我的原来的代码如下:
DirectoryInfo dir=new DirectoryInfo("C:\\");
FileInfo [] strfile=dir.GetFiles();
int i=strfile.Length;
Random ro=new Random(unchecked((int)DateTime.Now.Ticks));
int re=ro.Next(0,i);
因为我要随机选取文件。
回复人: qiuji(忆秋季) ( 五级(中级)) 信誉:99 2003-9-14 12:41:06 得分:0
up
回复人: ArLi2003(阿利 路过.NET) ( 两星(中级)) 信誉:100 2003-9-14 13:05:42 得分:8
dir.GetFiles("*.mp3");
这样的用法就可以
但不能指定多个,不过允许使用通配符,比如dir.GetFiles("*.mp?");
然后你可以根据strfile[i].Extension
来确定
回复人: chinchy(人民需要人民币) ( 两星(中级)) 信誉:140 2003-9-14 13:30:59 得分:25
System.IO.DirectoryInfo dirInfo=new System.IO.DirectoryInfo("F:\\");
Object[] oFileInfo=this.GetFileInfo(dirInfo,"*.mp3|*.pdf|*.rar");
for(int i=0;i<oFileInfo.Length;i++)
{
System.Console.Out.WriteLine(((System.IO.FileInfo)oFileInfo[i]).Name);
}
public Object[] GetFileInfo(System.IO.DirectoryInfo dirInfo,string sSearchPattern)
{
string[] sSearch=sSearchPattern.Split('|');
System.Collections.ArrayList al=new System.Collections.ArrayList();
System.IO.FileInfo[] fiTemp=null;
for(int i=0;i<sSearch.Length;i++)
{
fiTemp=dirInfo.GetFiles(sSearch[i].ToString());
al.AddRange(fiTemp);
}
return al.ToArray();
}
回复人: qiuji(忆秋季) ( 五级(中级)) 信誉:99 2003-9-14 13:52:43 得分:0
to chinchy(人民需要人民币) :
((System.IO.FileInfo)oFileInfo[i]).Name
出现错误:“object”并不包含对“Name”的定义
回复人: qiuji(忆秋季) ( 五级(中级)) 信誉:99 2003-9-14 13:55:17 得分:0
to chinchy(人民需要人民币) :
不好意思,我写错了。((System.IO.FileInfo)oFileInfo[i]).Name
我写成了(System.IO.FileInfo)oFileInfo[i].Name
回复人: qiuji(忆秋季) ( 五级(中级)) 信誉:99 2003-9-14 14:02:03 得分:0
谢谢!已经搞定!
不过,((System.IO.FileInfo)oFileInfo[i]).Name
应该为((System.IO.FileInfo)oFileInfo[i]).FullName
要不然文件路径显示为当前程序的路径。
该问题已经结贴 ,得分记录: freecs (3)、 net_lover (8)、 cgmx (6)、 ArLi2003 (8)、 chinchy (25)、