【发布时间】:2021-03-29 02:29:10
【问题描述】:
所以我一直在尝试制作一个函数
- 遍历包含 26 个文件的文件夹中的每个文件,
- 从一个 20 行的文件中随机抽取 10 行,
- 检查当前选择的行是否已经在当前文件中,如果是则再次尝试选择,
- 将 10 个随机行写入每个文件。
这是我到目前为止所得到的。但我不知道为什么它总是越界。我曾尝试通过循环将文件中的行放入另一个数组中,但这也无济于事。有没有人看到有什么问题?
string[] lines = File.ReadAllLines(@"randomLines.txt");
assignLines(lines);
static void assignLines(string[] listOfLines)
{
Random rnd = new Random();
foreach (var file in Directory.EnumerateFiles(@"files", @"*.txt"))
{
string[] assignedLines = new string[] { };
int j = 1;
int i = 0;
StreamWriter wr = new StreamWriter(file);
while (i < 5)
//for (int i = 0; i < File.ReadAllLines(file).Length + 1; i++)
{
int chosen = rnd.Next(0, listOfLines.Length - 1);
if (assignedLines.Contains(listOfLines[chosen]))
{
continue;
}
else
{
assignedLines[i] = listOfLines[chosen];
wr.WriteLine(j + ". " + listOfLines[chosen] + ".");
j++;
i++;
}
}
wr.Close();
}
}
【问题讨论】:
-
分配的行是一个长度为 0 的数组
new string[] { };我想您可能已经考虑将其用作 List或者如果不是,它至少会让您的生活更轻松。
标签: c# arrays loops random file-io