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