1
我试图用Visual Studio C#编辑文件中的一些数据。我试过使用两种方法C#中文件的最大数据量?
StreamReader and File.ReadAllLines/ReadAllText
这两个结果都给了我3414行内容。我在“ReadAllText”之后使用Split('\ n')。但是,当我检查使用以下命令在Linux上,我得到了如下的结果:
cat phase1_promoter_data_PtoP1.txt | wc
输出:
184829 164686174 1101177922
所以约185.000线和165个多万字。 Visual Studio的字数为我提供了大约1900万。
所以我的问题是,我读的文件是否错误或者Visual Studio是否对它将一次读取的数据量有限制?我的文件需要大约1 GB的空间。
这是我使用的代码:
try
{
using (StreamReader sr = new StreamReader("phase1_promoter_data_PtoP1.txt"))
{
String line = sr.ReadToEnd();
Console.WriteLine(line);
String[,] data = new String[184829, 891];
//List<String> data2 = new List<String>();
string[] lol = line.Split('\n');
for (int i = 0; i < lol.Length; i++)
{
String[] oneLine = lol[i].Split('\t');
//List<String> singleLine = new List<String>(lol[i].Split('\t'));
for (int j = 0; j < oneLine.Length; j++)
{
//Console.WriteLine(i + " - " + lol.Length + " - " + j + " - " + oneLine.Length);
data[i,j] = oneLine[j];
}
}
Console.WriteLine(data[3413,0]);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
如果该文件包含多于3414行,则该代码会在遇到第3415行时立即抛出一个超出范围的异常。我也不确定你的'String line'能在你的'string [] lol'旁边包含1GB的文本,它将包含相同的内容,但是分隔在换行符上。你确定你正在查看与“猫”相同的文件吗? – CodeCaster 2014-10-17 10:12:43
我的不好,我改变了我的数组的大小,因为我相信我的输出是错误的。但我不例外,因为实际上有3414行加载到数组中。 – Vanquiza 2014-10-17 10:16:02
也许某些行有\ r,有些有\ r \ n或\ n分隔符,并且wc将它们与ReadAllLines()区别对待? – 2014-10-17 10:18:40