簡體   English   中英

如何使用里面的文件返回我的文件夾列表?

[英]How do I return a list of my folders with the files inside?

我想知道如何使用里面的文件返回我的文件夾列表。

因為我不能返回兩個列表...並且不能將兩種類型都放在列表中。

    public List<DirectoryInfo> GetTopFolders()
    {
        List<DirectoryInfo> Folders = new List<DirectoryInfo>();
        List<FileInfo> Files = new List<FileInfo>();

        System.IO.DirectoryInfo di = new System.IO.DirectoryInfo("C://inetpub//wwwroot//Files//");
        di.GetDirectories();
        System.IO.FileInfo[] fiArr = di.GetFiles();

        foreach (DirectoryInfo t in di.GetDirectories())
        {
            Folders.Add(t);
            foreach (FileInfo f in di.GetFiles())
            {
                Files.Add(f);
            }
        }
        return Folders;
    }

這是我實際使用的代碼。

好吧,FileInfo和DirectoryInfo都繼承自FileSystemInfo 因此,您可以維護該類型的列表,並將整個批次返回:

public List<FileSystemInfo> GetTopFoldersAndFiles()
{
    List<FileSystemInfo> FilesAndFolders = new List<FileSystemInfo>();

    System.IO.DirectoryInfo di = new System.IO.DirectoryInfo("C://inetpub//wwwroot//Files//");
    di.GetDirectories();
    System.IO.FileInfo[] fiArr = di.GetFiles();

    foreach (DirectoryInfo t in di.GetDirectories())
    {
        FilesAndFolders.Add(t);
        foreach (FileInfo f in di.GetFiles())
        {
            FilesAndFolders.Add(f);
        }
    }
    return FilesAndFolders;
}

當然,您可能需要在代碼中進行一些條件處理,您可以根據每個項目的類型使用此對象。

你可以使用兩元組。 請參閱msdn上的Tuple.Create

public Tuple<List<DirectoryInfo>,List<FileInfo>> GetTopFolders()
{
    List<DirectoryInfo> Folders = new List<DirectoryInfo>();
    List<FileInfo> Files = new List<FileInfo>();

     /* All your other code here */
     /* Removed for brevity*/
    foreach (DirectoryInfo t in di.GetDirectories())
    {
        Folders.Add(t);
        foreach (FileInfo f in di.GetFiles())
        {
            Files.Add(f);
        }
    }
    return Tuple.Create(Folders, Files);
}

你這樣使用它:

var fileAndFolders = GetTopFolders()
fileAndFolders.Item1 //will be your folders of type List<DirectoryInfo>
fileAndFolders.Item2 //will be your folders of type List<FileInfo>

您可以使用Dictionary<DirectoryInfo, List<FileInfo>>

private Dictionary<DirectoryInfo, List<FileInfo>> GetTopFolders()
{
    Dictionary<DirectoryInfo, List<FileInfo>> r = new Dictionary<DirectoryInfo, List<FileInfo>>();


    DirectoryInfo di = new DirectoryInfo("C://inetpub//wwwroot//Files//"); 
    di.GetDirectories();

    r.Add(di, di.GetFiles().ToList());

    foreach (DirectoryInfo t in di.GetDirectories()) 
    {
        r.Add(t, t.GetFiles().ToList());
    } 

    return r; 
}

然后你可以列出你的文件夾和文件,如下所示:

StringBuilder sb = new StringBuilder();

foreach (KeyValuePair<DirectoryInfo, List<FileInfo>> item in GetTopFolders())
{
    sb.AppendLine(item.Key.FullName);

    foreach (FileInfo file in item.Value)
    {
        sb.AppendLine("\t" + file.Name);
    }
}

Console.WriteLine(sb.ToString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM