【发布时间】:2015-04-04 17:09:36
【问题描述】:
我每隔几秒就有一个新文件,如下所示:
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();
}
【问题讨论】:
-
如果你不咬手喂你,你更有可能得到有用的答案。没有人对你“废话”;我将之前的评论视为从您那里获取更多信息的简单尝试,以便更好地理解问题。有时,当不使用明显的解决方案时,这是因为 OP 没有意识到它们;其他时候是因为有一些特定的要求不使用它们。无论如何,对帮助尝试的敌意反应会适得其反。
-
我仍然无法理解您在这里实际想要完成的工作。您发布的代码有明显的错误——一次读取一个字符而不是一整行,第一次读取后无限循环,举几个例子——实际上没有任何东西可以帮助理解什么输出你想要一个给定的输入。如果您真的想对文件进行排序,则必须将所有数据一起排序;对于 6GB 的文件,这可能意味着您想要进行合并排序。或者,也许您想要的不是全数据排序?从你的问题看不清楚。
-
请提供一些示例输入数据,如果数据位于多个文件中,请在您的问题中单独格式化,并清楚地显示(并解释)在给定示例输入的情况下您想要实现的输出。请阅读stackoverflow.com/help/how-to-ask,了解有关如何以清晰、可回答的方式提出问题的其他建议。
-
尽管如此,请在您的问题中明确输入是什么。您只提供了一个整数列表。如果您想处理多个文件,您需要非常清楚这些文件之间的关系以及您希望如何一起处理它们。此外,您还没有提供任何示例输出。最后,请注意,当您收到有关您的问题的任何 cmets 的通知时,除非您在自己的评论中输入
@符号和他们的用户名,否则评论者不会知道您已回复。例如。 @Deland。 -
我不知道如何有任何想法,因为我还不知道您要做什么。我了解您认为您已经充分解释了目标,但是当我说您没有充分解释时,请相信我。请将您的问题视为一个完全的局外人,对问题的了解为零,并考虑该局外人需要什么来解决它。正如上面的各种 cmets(包括我自己的)所解释的那样,您的问题仍然缺少很多细节。
标签: c# sorting text streamreader streamwriter.write