您的位置:首页 > 其它

遍历目录下所有各级子目录文件的全路径

2005-01-03 13:58 447 查看
public System.Collections.Specialized.StringCollection GetAllFiles(string rootdir)
{

System.Collections.Specialized.StringCollection result = new System.Collections.Specialized.StringCollection();

GetAllFiles(rootdir,result);

return result;
}

public void GetAllFiles(string parentDir,System.Collections.Specialized.StringCollection result)
{

string[] dir = System.IO.Directory.GetDirectories(parentDir);
for (int i=0;i<dir.Length;i++)
GetAllFiles(dir[i],result);

string[] file = System.IO.Directory.GetFiles(parentDir);
for (int i=0;i<file.Length;i++)
result.Add(file[i]);

}

具体调用如下:

private void button1_Click(object sender, System.EventArgs e)
{
System.Collections.Specialized.StringCollection result = GetAllFiles(@"c:/myfiles/");

for (int i=0;i<result.Count;i++)
MessageBox.Show(result[i]);
}

-----------------------------------------------------------
用2个循环就解决了
string[] dir = System.IO.Directory.GetDirectories(parentDir);
for (int i=0;i<dir.Length;i++)
{
GetAllFiles(dir[i],result);
string[] file = System.IO.Directory.GetFiles(parentDir);
for (int i=0;i<file.Length;i++)
{
result.Add(file[i]);
}
}

-----------------------------------------------------------
//递归列出目录下的所有文件和子目录

public void ListFiles( FileSystemInfo fileinfo )

{

if( ! fileinfo.Exists ) return;

DirectoryInfo dirinfo = fileinfo as DirectoryInfo;

if( dirinfo == null ) return; //不是目录

indent++;//缩进加一

FileSystemInfo [] files = dirinfo.GetFileSystemInfos();

for( int i=0; i< i++)>遍历目录下所有文件、子目录

{

FileInfo file = files[i] as FileInfo;

if( file != null ) // 是文件

{

this.richTextBox1.Text+=(WriteSpace(indent)+"|-"+

file.Name + "/t" + ConvertToKByte(file.Length)+"/r" );

}

else //是目录

{

this.richTextBox1.Text+=(WriteSpace(indent)+"+"+files[i].FullName+"/r");

ListFiles( files[i] ); //对子目录进行递归调用

}

}

indent--;//缩进减一

}

------------------------

System.Reflection.Assembly.GetAssembly.Location
//C#的控制台程序中,如何得到当前程序的路径
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: