【发布时间】:2017-11-01 14:34:34
【问题描述】:
我正在尝试在 C# 应用程序中向 .txt 文件中写入大量行,大约 20-30000 行:
class Program
{
static void Main(string[] args)
{
var watch = System.Diagnostics.Stopwatch.StartNew();
// the code that you want to measure comes here
List <string> firstListTrade= new List<string>();
List <string> secondListTrade= new List<string>();
firstListTrade= System.IO.File.ReadAllLines(@"C:\Users\me\Desktop\File1.txt").ToList();
secondListTrade=System.IO.File.ReadAllLines(@"C:\Users\me\Desktop\Fil2.txt").ToList();
string resultOne = "C:\\Users\\me\\Desktop\\resultOutput1.txt";
string resultatsTwoo = "C:\\Users\\elbb001\\Desktop\\resultOutput2.txt";
//Sorting lists
firstListTrade= firstListTrade.OrderBy(q => q).ToList();
secondListTrade= secondListTrade.OrderBy(q => q).ToList();
// Write the string array to a new file named "WriteLines.txt".
StreamWriter outputFileOne = new StreamWriter(resultatsOne);
StreamWriter outputFileTwoo = new StreamWriter(resultatsTwoo);
int i = firstListTrade.Count();
int j = secondListTrade.Count();
int endofFile = 0;
foreach (string trade in secondListTrade)
{
endofFile++;
if (!firstListTrade.Contains(trade))
{
outputFileOne.WriteLine("Number : " + trade + " exist in first list but not second");
}
if(endofFile==i)
{
outputFileOne.WriteLine("End of file : " + endofFile);
}
outputFileOne.Flush();
}
endofFile = 0;
foreach (string trade in firstListTrade)
{
endofFile++;
if (!secondListTrade.Contains(trade))
{
outputFileTwoo.WriteLine("Number : " + trade + " exist in second but not in first ");
}
if (endofFile == j)
{
outputFileTwoo.WriteLine("End of file : "+ endofFile);
}
}
watch.Stop();
var elapsedMs = watch.ElapsedMilliseconds;
// Keep the console window open in debug mode.
Console.WriteLine("Done in : " + elapsedMs.ToString());
System.Console.ReadKey();
}
}
我编译并没有收到错误,但是当我打开文件时,我看到了我想要的结果,但是当我一直向下滚动时,我注意到文件末尾有这句话:
" 交易号:22311"
但是当我在文件末尾使用断点时,它是在代码中到达但没有写入文件中?
可能出了什么问题?它是否超出了内存?还是txt文件不能再写了?
【问题讨论】:
-
请发布更完整的示例。
otherTradeList的类型是什么?i变量的意义是什么?帮助我们帮助您。 -
**BLANK BLANK BLANK*行来自某个地方,而不是来自框架。你正在做的事情是创造它。 -
没有 lib 类同时具有 Contains() 和 WriteLine()
-
人们可能会对您投反对票,因为您的代码示例仍然不完整,并且所选答案并不能真正解释问题所在。该网站不仅可以帮助找到您的问题的下一个人,还可以帮助您。如果您扩展您的示例,我们可以解决根本问题,这对于网站来说将是一个更有价值的问题。
-
按要求格式化 - 正如我之前所说,虽然你宁愿解决真正的问题而不是隐藏它 - 我注意到在你的第一个循环中你有 Flush,但在第二个循环中没有 - 所以你可以在第二个文件中遇到同样的问题。请参阅不需要调用 Flush 的更新答案。您还可以通过使用 Linq Except 方法来简化您的代码,以查找在一个列表中但不在另一个列表中的所有条目。