出于某种原因,我的代码使Visual Studio完全崩溃并自行关闭。
我知道这是因为字符串长度,因为我在解压缩之前使用的是88 MB的.zip文件。
以下是我的代码。
正如你所看到的,我试图将字节[]分成较小的部分,但这没有帮助=>我认为这是字符串长度使它失败。
byte[] decompressed = Decompress(File.ReadAllBytes(localFilename));
List<string> list = null;
if (decompressed.Length > 50000000)
{
byte[] first = decompressed.Take(50000000).ToArray();
byte[] second = decompressed.Skip(50000000).ToArray();
string decompressedString = System.Text.Encoding.Default.GetString(first);
decompressedString += System.Text.Encoding.Default.GetString(second);
string[] decompressedStringArray = decompressedString.Split('\n');
list = new List<string>(decompressedStringArray);
}
else
{
string decompressedString = System.Text.Encoding.Default.GetString(decompressed);
string[] decompressedStringArray = decompressedString.Split('\n');
list = new List<string>(decompressedStringArray);
}
有关如何改进代码以避免Visual Studio崩溃的任何想法? (即如何以更好的方式从byte []到List?)
非常感谢!
答案 0 :(得分:0)
一个简单的解决方法:
List<string> list = null;
if (decompressed.Length > 50000000)
{
byte[] first = decompressed.Take(50000000).ToArray();
string decompressedString = System.Text.Encoding.Default.GetString(first);
string[] decompressedStringArray = decompressedString.Split('\n');
list = new List<string>(decompressedStringArray);
byte[] second = decompressed.Skip(50000000).ToArray();
decompressedString = System.Text.Encoding.Default.GetString(second);
decompressedStringArray = decompressedString.Split('\n');
List<string> list2 = new List<string>(decompressedStringArray);
list.AddRange(list2);
}
else
{
string decompressedString = System.Text.Encoding.Default.GetString(decompressed);
string[] decompressedStringArray = decompressedString.Split('\n');
list = new List<string>(decompressedStringArray);
}