遍歷目錄下所有各級子目錄檔案的全路徑
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#的控制檯程式中,如何得到當前程式的路徑