怎样有选择地获取某个目录下的某些类型文件

主  题:  怎样有选择地获取某个目录下的某些类型文件?
作  者:  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)、

Contributors: FHL