0
public int RunStageData(string rootDirectory, stringdataFolder)
{
    string[] files = new string[] { };
    files = Directory.GetFiles(rootDirectory + dataFolder);
    string[] tableOrder = new string[] { };
    tableOrder = Directory.GetFiles(@"C:\_projects\ExampleProject\src", "TableOrder.txt");
    System.IO.StreamReader tableOrderReader = new System.IO.StreamReader(tableOrder[0]);

    for (int count = 0; count < files.Length; count++)
                    {
                        string currentTableName =tableOrderReader.ReadLine();
                        //files[count] = Directory.GetFiles(@"C:\_projects\ExampleProject\src", currentTableName);
                    }

}

大家好,对不起,如果我的代码有点草率。我的问题主要是我注释掉的那行。所以基本上我在这里要做的是根据这些名称在 txt 文件中的顺序填充文件名的字符串数组。所以我从 txt 文件中读取了第一行,然后在目录中检索该文件的名称(假设它存在)并将其放在数组的第一个位置,然后继续。

例如,如果 txt 文件按以下顺序包含这些单词:

我希望阵列首先有 Dog,然后是 Sheep,然后是 Cat。我的问题是,我评论的那行给了我一个错误,上面写着“错误 41 无法将类型 'string[]' 隐式转换为 'string'”


我猜这是因为 Directory.GetFiles 有可能返回多个文件。那么,我可以使用另一种方法来实现我正在寻找的结果吗?谢谢你。

4

3 回答 3

1

我假设您想要文件的内容(如果您只想要文件名并且需要检查是否存在,则需要不同的解决方案)。

files[count] = File.ReadAllText(Path.Combine(@"C:\_projects\ExampleProject\src", currentTableName));

还有其他一些建议:

  • 不要用虚假数据初始化变量,= new string[] {}可以删除
  • 不要count用作索引器,它会令人困惑(计数毕竟是数组的属性)
  • Path.Combine加入路径时使用。它更容易为您处理\
于 2013-06-17T21:27:03.530 回答
0

如果你的数组文件只包含路径,你可以这样做:

path = @"C:\_projects\ExampleProject\src\" + currentTableName;
If(File.Exists(path))
{
files[count] = path;
}
于 2013-06-17T21:40:26.490 回答
0

从你的问题:

所以基本上我在这里要做的是根据这些名称在 txt 文件中的顺序填充文件名的字符串数组。所以我从 txt 文件中读取了第一行,然后在目录中检索该文件的名称(假设它存在)并将其放在数组的第一个位置,然后继续。

因此,您的 TableOrder.txt 已经包含正确顺序的文件,因此您可以执行以下操作:

string[] files = File.ReadAllLines(@"C:\_projects\ExampleProject\src\TableOrder.txt")
于 2013-06-17T21:41:33.493 回答