Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用SevenZip-7Zip压缩/解压缩字符串_C#_7zip_Sevenzipsharp_Text Compression - Fatal编程技术网

C# 如何使用SevenZip-7Zip压缩/解压缩字符串

C# 如何使用SevenZip-7Zip压缩/解压缩字符串,c#,7zip,sevenzipsharp,text-compression,C#,7zip,Sevenzipsharp,Text Compression,文档太差了,所以我很难运行它 我添加了dll文件和正确的引用 最后它压缩字符串,但在我解压缩时给出错误 public static string SevenZip_DE_CompressString(string compressedText) { byte[] uncompressedbuffer = null; using (MemoryStream compressedbuffer = new MemoryStream(Encoding.U

文档太差了,所以我很难运行它

我添加了dll文件和正确的引用

最后它压缩字符串,但在我解压缩时给出错误

    public static string SevenZip_DE_CompressString(string compressedText)
    {
        byte[] uncompressedbuffer = null;

        using (MemoryStream compressedbuffer = new MemoryStream(Encoding.UTF8.GetBytes(compressedText)))
        {
            using (SevenZipExtractor extractor = new SevenZipExtractor(compressedbuffer))
            {
                using (MemoryStream msout = new MemoryStream())
                {
                    extractor.ExtractFile(0, msout);
                    uncompressedbuffer = msout.ToArray();
                }
            }
        }

        return Encoding.UTF8.GetString(uncompressedbuffer);
    }
你能告诉我错误在哪里吗

    public static string SevenZip_CompressString(string text)
    {
        byte[] compressedData = null;

        SevenZipCompressor compressor = new SevenZipCompressor();
        compressor.CompressionMethod = CompressionMethod.Ppmd;
        compressor.CompressionLevel = SevenZip.CompressionLevel.Ultra;
        compressor.ScanOnlyWritable = true;
        compressor.DefaultItemName = "T";

        using (MemoryStream msin = new MemoryStream(Encoding.UTF8.GetBytes(text)))
        {
            using (MemoryStream msout = new MemoryStream())
            {
                compressor.CompressStream(msin, msout);

                compressedData = msout.ToArray();
            }
        }

        return System.Text.Encoding.UTF8.GetString(compressedData);
    }
下面是解压缩

    public static string SevenZip_DE_CompressString(string compressedText)
    {
        byte[] uncompressedbuffer = null;

        using (MemoryStream compressedbuffer = new MemoryStream(Encoding.UTF8.GetBytes(compressedText)))
        {
            using (SevenZipExtractor extractor = new SevenZipExtractor(compressedbuffer))
            {
                using (MemoryStream msout = new MemoryStream())
                {
                    extractor.ExtractFile(0, msout);
                    uncompressedbuffer = msout.ToArray();
                }
            }
        }

        return Encoding.UTF8.GetString(uncompressedbuffer);
    }
这里是我收到的错误信息

c#net 4.5 WPF

packages\SevenZipSharp.0.64\lib\SevenZipSharp.dll

这些都是错误的:

System.Text.Encoding.UTF8.GetString(compressedData)
Encoding.UTF8.GetBytes(compressedText)
压缩数据不是UTF-8。你不应该把它当作文本。始终以二进制形式存储压缩数据,如
字节[]
。如果需要通过纯文本通道(如电子邮件)传递,请使用Base64编码


但从根本上说,改变你的想法。压缩不是一个函数
string->string
。它是
byte[]->byte[]
。将其视为<>代码> String >字节[]/Calp>.< /P>也是有效的,您是否从视图细节检查了EnEnter异常…你发布的异常窗口底部的链接?我不知道为什么,但我很确定你会在上一个关于DB压缩的问题之后问这个问题……@SivaGopal内部异常是null@Mat如果你知道答案,我很感激it@MonsterMMORPG我没有答案,但我怀疑你发现了一个问题,2分钟后你来到这里让其他人做你的调查。。。我的意思是,在问问题之前花点时间(1-2个小时,做你的试错)。这只是一个建议……:)我说——将压缩数据存储为
byte[]
。是的,就像您可以将其存储在SQL server中一样:),但我根据您所说的解决了问题。