0
我試圖得到一個文件列表排序,沒有成功。得到遞歸的文件列表按字母順序排序的子文件和文件名
它遞歸獲取文件,但沒有任何順序。
下面的代碼:
private void Step2_Load(object sender, EventArgs e)
{
foreach (string file in GetFiles(PathClient))
{
string flist = "";
if (file.Contains(PathClient + "\\"))
flist = file.Replace(PathClient + "\\", "");
else
flist = file.Replace(PathClient, "");
LB_FULL.Items.Add(flist);
}
.
.
.
static IEnumerable<string> GetFiles(string path)
{
Queue<string> queue = new Queue<string>();
queue.Enqueue(path);
while (queue.Count > 0)
{
path = queue.Dequeue();
try
{
foreach (string subDir in Directory.GetDirectories(path))
queue.Enqueue(subDir);
}
catch (Exception ex)
{
//ex
}
string[] files = null;
try
{
files = Directory.GetFiles(path);
}
catch (Exception ex)
{
//ex
}
if (files != null)
{
for (int i = 0; i < files.Length; i++)
{
yield return files[i];
}
}
}
}
我已經試過排序依據,但它只能通過各種各樣的文件名,無論子文件夾中。
我想先按子文件夾排序,然後按文件名排序。
for ex。
/
/file_a.bla
/file_b.bla
/file_c.bla
/sub1/file_a.bla
/sub1/file_b.bla
/sub2/_file_x.bla
/testsub/a.bla
...
等等。
任何想法如何管理它?
謝謝,這有很大的幫助。 但如果我直接列出一個驅動器(例如N:\),它顯示的驅動器號不應顯示。 否則它的工作原理應該如此 – Thyrador
你的意思是如果你設置了'string dirToSearch = @「H:」;'那麼它仍然顯示'H:'? –
是的。另一件事是,代碼(我也是)不處理大於260個字符的路徑,對嗎? – Thyrador