Byte [] to List <string>使Visual Studio崩溃</string>

时间:2014-10-24 13:01:16

标签: string zip compression

出于某种原因,我的代码使Visual Studio完全崩溃并自行关闭。

我知道这是因为字符串长度,因为我在解压缩之前使用的是88 MB的.zip文件。

以下是我的代码。

正如你所看到的,我试图将字节[]分成较小的部分,但这没有帮助=&gt;我认为这是字符串长度使它失败。

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?)

非常感谢!

1 个答案:

答案 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);
}