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有可能返回多个文件。那么,我可以使用另一种方法来实现我正在寻找的结果吗?谢谢。
答案 0 :(得分:1)
我假设您想要文件的内容(如果您只想要文件名并需要检查是否存在,则需要使用不同的解决方案。)
files[count] = File.ReadAllText(Path.Combine(@"C:\_projects\ExampleProject\src", currentTableName));
还有其他一些建议:
= new string[] {}
可以删除count
作为索引器,它会让人感到困惑(毕竟count是数组的属性)Path.Combine
。它为您处理\
会容易得多。答案 1 :(得分:0)
如果您的阵列文件仅包含路径,则可以执行以下操作:
path = @"C:\_projects\ExampleProject\src\" + currentTableName;
If(File.Exists(path))
{
files[count] = path;
}
答案 2 :(得分:0)
从你的问题:
所以基本上我在这里要做的就是填充一个字符串数组 文件名基于txt文件中这些名称的顺序。所以我 从txt文件中读取第一行,然后检索其名称 文件在目录中(假设它存在)并将其放在第一个位置 数组,然后继续。
因此,您的TableOrder.txt已按正确顺序包含文件,因此您可以这样做:
string[] files = File.ReadAllLines(@"C:\_projects\ExampleProject\src\TableOrder.txt")