【问题标题】:how to insert a folder of text files as an index inside arraylist?如何在arraylist中插入一个文本文件文件夹作为索引?
【发布时间】:2026-02-10 15:35:01
【问题描述】:

我想知道是否有某种方法可以在数组列表中插入一些包含一些文本文件的文件夹作为索引,例如我创建了一个名为手势的数组列表,现在我需要访问一些包含 4 个文件夹的路径。例如向上文件夹、向下文件夹、向左文件夹和向右文件夹,每个文件夹都有一些来自加速计的文本文件。我想要做的是在arraylist中的索引0中插入文件夹及其数据,在arraylist中的索引1中插入文件夹,依此类推..有没有办法做到这一点? 我正在使用 Windows 窗体应用程序 C#

万一分不清楚。 - 我从加速度计中获得了一些保存在许多文本文件中的数据。 - 我有 4 个文件夹“上、下、左、右”,每个文件夹都有许多文本文件,其中包含来自加速度计的数据。 - 我想要做的是存储名为“up”的第一个文件夹,其中包含多个文本文件,这些文本文件是arraylist或列表中索引号“0”中来自加速度计的数据,并将文件夹“down”放在索引号中“ 1" 在数组列表或列表中,依此类推。以便对这些数据进行一些计算。

【问题讨论】:

    标签: c# arraylist


    【解决方案1】:

    不要在 .NET 中使用 ArrayList。 ArrayLists 是无类型的(即类型为object)。最好将数组用于固定大小的集合,并在事先不知道所需大小时使用List<T>

    例如,您可以有一个列表数组。每个数组条目将代表您的四个文件夹之一,并包含一个文件列表。

    List<string>[] files = new List<string>[4]; // This creates the array.
    for (int i = 0; i < 4; i++) {
        files[i] = new List<string>(); // Create the empty lists
    }
    

    知道你可以像这样添加文件:

    files[0].Add(someFile);
    

    如果您的文件夹数量不定,请使用字符串数组列表(因为Directory.GetFiles() 生成字符串数组)。

    List<string[]> files = new List<string[]>(); // Create the outer list.
    foreach (string folder in Directory.GetDirectories(baseFolder)) {
         files.Add(Directory.GetFiles(folder));
    }
    

    除了将文件路径存储为 string 之外,您还可以为每个文件 (List&lt;FileInfo&gt;[]) 存储一个 FileInfo 对象。 FileInfo 为您提供有关文件的大量信息,例如文件长度或文件日期,并提供文件操作方法。

    另一种可能性是只存储DirectoryInfo 对象并动态读取文件:

    DirectoryInfo[] folders = new DirectoryInfo[4];
    folders[0] = new DirectoryInfo(@"C:\Data\folder up");
    
    foreach (FileInfo file in folders[0].EnumerateFiles())
    {
        DoSomethingWith(file);
    }
    

    【讨论】:

    • 问题是我不想定义一些索引,我的意思是现在我有 4 个手势文件夹,向上、向下、向左和向右,但是如果我想添加更多手势怎么办。我希望程序读取路径中的所有文件夹
    • 然后列出列表List&lt;List&lt;string&gt;&gt;
    • 请问如何将其应用于上述代码?
    • 如果你没有理解我的意思,我只需要将文件夹中的所有文本放在索引 0 中,并将文件夹中的所有文本放在索引 1 中,依此类推,无论是在数组列表还是列表中
    • 所以你不想存储文件名而是文件内容,即文本?如果是,如何?作为一个包含所有文本的字符串还是作为一组文本行?您的问题对此非常不清楚(这就是您可能被否决的原因)。您还需要存储文件夹名称和文件名吗?请编辑您的问题并澄清这些要点。