我每隔几秒就有一个新文件,如下所示:
23
45个
21个
1
9
23个
42个
22个
40个
11个
33个
32个
18个
11个
12个
32个
22个
7
37个
30
在要读取的文本文件中,每行有一个数字,介于1-40之间。这些文件每分钟生成几次。
我正在尝试使用StringReader
和StringWriter
进行升序排序。我的逻辑必须有缺陷,因为我打算将此文件发送到此文件中。我将true
作为append
参数传递,但我的排序文件中仍然没有填充任何内容。
目标是从文本文件中读取for
循环,该循环遍历1-40个int值并将其与读取的文件中的每个字符串或int进行比较,并在从读取文件中找到该文件时将其复制到按排序顺序排序的文件。
我已经看了一段时间它应该工作但不会。使用文件读取器/编写器类或流读取器/写入器会比我更容易吗?
public static void ProcessDirectory()
{
int variable1;
StreamReader readToSort = new StreamReader(@"C:write.txt");
StreamWriter writeSorted = new StreamWriter(@"C:Sorted_File.txt", true);
for (int i = 1; i > 41; i++)
{
variable1 = (readToSort.Read());
while (!readToSort.EndOfStream)
{
if (variable1 == i)
{
writeSorted.Write(i.ToString() + "\n");
}
}
MessageBox.Show("processing #" + variable1);
}
readToSort.Close();
writeSorted.Close();
}
答案 0 :(得分:0)
为了确保我正确理解您要解决的问题,我根据您的问题及其下方的评论制作了一系列要求。
我不完全清楚你的输入是什么,所以你可能需要在这里纠正我。您是否需要组合多个(较小的)输入文件,对组合内容进行排序,并将其输出到单个(较大的)文件?
示例:
如果是这样,每个单独的文件是否足够小以便加载到内存中(但不是整合的?)
示例(假设1GB RAM):
或者,每个单独的输入文件是否足够大以至于它不适合内存,并且这些文件是否需要分类到相应的输出文件?
示例:
假设您的(未排序的)输入和(已排序)输出文件都太大而无法放入内存,您需要一种方法来以块的形式对这些文件的内容进行排序。您要查找的关键字是外部排序。
这是关于CodeProject的一个很好的例子(包含源代码和解释):Sorting Huge Text Files
您可能需要查看一些类似的StackOverflow问题:Reading large text files with streams in C#
如果您需要有关实际实施的任何帮助,请提供有关输入和(所需)输出的更多信息。文件本身显然太大而无法上传 - 带有输入和输出文件的目录的屏幕截图也可以使用。然后我(和其他人)可以看到每个文件的大小以及它们需要聚合的程度(如果有的话)。