C# 如何使用c解压文件#

C# 如何使用c解压文件#,c#,C#,可能重复: 处理所有plz建议使用c#将文件解压缩到所选文件夹的方法尝试使用FastZip到您有两种选择 1) 您可以使用第三方API,如DotNetZip() 2) 也可以使用System.IO.Compression.DeflateStream。它需要.NET 2.0。看看GZipStream,它是框架中内置的zip支持之一,MSDN页面上有一个示例: 以下是MSDN页面中的示例: public class Program { public static void Main()

可能重复:

处理所有plz建议使用c#

将文件解压缩到所选文件夹的方法尝试使用FastZip到

您有两种选择

1) 您可以使用第三方API,如DotNetZip()


2) 也可以使用System.IO.Compression.DeflateStream。它需要.NET 2.0。

看看GZipStream,它是框架中内置的zip支持之一,MSDN页面上有一个示例:

以下是MSDN页面中的示例:

public class Program
{

    public static void Main()
    {
        // Path to directory of files to compress and decompress.
        string dirpath = @"c:\users\public\reports";

        DirectoryInfo di = new DirectoryInfo(dirpath);

        // Compress the directory's files.
        foreach (FileInfo fi in di.GetFiles())
        {
            Compress(fi);
        }

        // Decompress all *.gz files in the directory.
        foreach (FileInfo fi in di.GetFiles("*.gz"))
        {
            Decompress(fi);
        }
    }

    public static void Compress(FileInfo fi)
    {
        // Get the stream of the source file.
        using (FileStream inFile = fi.OpenRead())
        {
            // Prevent compressing hidden and 
            // already compressed files.
            if ((File.GetAttributes(fi.FullName) 
                & FileAttributes.Hidden)
                != FileAttributes.Hidden & fi.Extension != ".gz")
            {
                // Create the compressed file.
                using (FileStream outFile = 
                            File.Create(fi.FullName + ".gz"))
                {
                    using (GZipStream Compress = 
                        new GZipStream(outFile, 
                        CompressionMode.Compress))
                    {
                        // Copy the source file into 
                        // the compression stream.
                    inFile.CopyTo(Compress);

                        Console.WriteLine("Compressed {0} from {1} to {2} bytes.",
                            fi.Name, fi.Length.ToString(), outFile.Length.ToString());
                    }
                }
            }
        }
    }

    public static void Decompress(FileInfo fi)
    {
        // Get the stream of the source file.
        using (FileStream inFile = fi.OpenRead())
        {
            // Get original file extension, for example
            // "doc" from report.doc.gz.
            string curFile = fi.FullName;
            string origName = curFile.Remove(curFile.Length - 
                    fi.Extension.Length);

            //Create the decompressed file.
            using (FileStream outFile = File.Create(origName))
            {
                using (GZipStream Decompress = new GZipStream(inFile,
                        CompressionMode.Decompress))
                {
                    // Copy the decompression stream 
                    // into the output file.
                    Decompress.CopyTo(outFile);

                    Console.WriteLine("Decompressed: {0}", fi.Name);
                }
            }
        }
    }
}

NET中有两种内置的处理压缩流的方法。DeflateStream和GZipStream

DeflateStream ds = new DeflateStream(File.OpenRead(@"c:\myfolder\data.zip"), CompressionMode.Decompress);

GZipStream gZip = new GZipStream(File.OpenRead(@"c:\myfolder\data.zip"), CompressionMode.Decompress);

不,
DeflateStream
不能解压文件。我认为它可以-从MSDN“这个类代表Deflate算法,一种无损文件压缩和解压的行业标准算法”--仅DeflateStream无法解压.zip文件。事实上,您链接的页面明确表示,“此类本身不提供向.zip存档添加文件或从中提取文件的功能。”这将不允许您解压缩和压缩zip文件。虽然它们都使用DEFLATE,但ZIP和GZIP不兼容。文件不是流。它们得到了您指定的流不能使用的标题。