c# - 如何在 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();
}
}
}
解决方案
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);
}
}
}
}
推荐阅读
- ios - How to repeat local notification every 5 sec in background
- python - Partially split string column in pandas
- javascript - 如何从动态更新网页中提取数据
- nested - 如何在不牺牲文档可读性的情况下将一个组添加到 Doxygen 中的多个组
- visual-studio - 我正在做一门课程,但讲师说的东西不起作用
- javascript - TypeError:无法读取未定义 Dialogflow Promise 的属性“then”
- docker - Docker python won't start even in python image
- python - cv2.imread() 中的错误:(-215:Assertion failed) !_src.empty() - 怎么了?
- python - 如何使用按钮在 matplotlib 中的两个不同图形之间切换
- python - 如何使用 Python 处理 SQL 转储