首页 > 解决方案 > 如何在 C# 中读取多个 zip 文件

问题描述

我有两个问题,你能帮帮我吗,我有一个可以很好地读取 zip 文件的功能,但我不能再读取拆分的 zip 文件了。

邮编.001 邮编.002

如何读取 zip.001 文件内容?以及是否可以读取带有特殊字符的内容,例如óćęł等。

预先感谢您的帮助。

关于罗伯斯

using (OpenFileDialog openFileDialog1 = new OpenFileDialog())
{



    openFileDialog1.InitialDirectory = d.Name;
    //openFileDialog1.InitialDirectory = @"c:\";
    openFileDialog1.Filter = "zip files (*.zip)|*.zip |All files (*.*)|*.*";
    openFileDialog1.FilterIndex = 2;
    openFileDialog1.RestoreDirectory = true;

    if (openFileDialog1.ShowDialog() == DialogResult.OK)
    {

        ZipArchive zip = ZipFile.OpenRead(openFileDialog1.FileName);

        listBox1.Items.Clear();
        foreach (ZipArchiveEntry entry in zip.Entries)
        {

            string unicodeString = entry.FullName;

            // Create two different encodings.
            Encoding ascii = Encoding.GetEncoding("CP852");
            Encoding unicode = Encoding.Unicode;

            // Convert the string into a byte array.
            byte[] unicodeBytes = unicode.GetBytes(unicodeString);

            // Perform the conversion from one encoding to the other.
            byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes);

            listBox1.Items.Add(unicodeString);
            listBox1.ForeColor = Color.FromArgb(1, 150, 227);

            //textBox5.AppendText(entry.FullName);
            // toolStripStatusLabel2.Text = " Ilość elementów:  " + listBox1.Items.Count.ToString();

        }

    }
}

标签: c#filezipfileziparchive

解决方案


SevenZipSharp 及其只读 7zip 文件而不是 zip 文件,我收到错误消息。

using (OpenFileDialog openFileDialog1 = new OpenFileDialog())
                    {
                        openFileDialog1.InitialDirectory = d.Name;               
                        openFileDialog1.Filter = "zip files (*.zip)|*.zip |All files (*.*)|*.*";
                        openFileDialog1.FilterIndex = 2;
                        openFileDialog1.RestoreDirectory = true;


                        if (openFileDialog1.ShowDialog() == DialogResult.OK)
                        {                    
                            SevenZip.SevenZipCompressor.SetLibraryPath(Path.Combine(Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory + "X86\\"),"7z.dll"));
                            SevenZip.SevenZipExtractor.SetLibraryPath(Path.Combine(Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory + "X86\\"), "7z.dll"));
                            using (var zip = new SevenZipExtractor(openFileDialog1.FileName))
                            {
                                foreach (var file in zip.ArchiveFileData)
                                {
                                    listBox1.Items.Add(file.FileName);
                                    listBox1.ForeColor = Color.FromArgb(1, 150, 227);
                                }
                            }
                        }
                    }

推荐阅读