C# zipfile解压文件内存在同名但大小写不同的文件,导致解压失败

问题遇到的现象和发生背景 .net framework4.8 使用zipfile解压apk文件 文件内包含同名但大小写不同的文件 比如0H.xml和0h.xml 但是zipfile无法区分大小写 导致解压时报错
问题相关代码,请勿粘贴截图

System.IO.Compression.ZipFile.ExtractToDirectory(sources, @path);

运行结果及报错内容

img

我的解答思路和尝试过的方法

使用.net6.0 zipfile重写同名文件但是达不到想要的目的,希望文件内容不缺失;使用windows强制解压目标文件夹区分大小写,还是解压不了

我想要达到的结果

希望解压出来最后的文件内容完整,可存在同名但大小写不同的文件,被压缩的压缩源文件可以被改动但是最后也内容完整;

linux下是严格区分大小写的
而windows下是不区分大小写的
你在linux下打包的文件夹,里面有同名文件
想在windows下一键解压必然出错
你只能用winzip打开压缩包,然后一个一个的选需要解压出来的文件,把它们重命名或放到不同的目录下面

供参考


        private void button2_Click(object sender, EventArgs e)
        {
            string src = @"D:\tt.zip";
            string dst = @"D:\";
            
            System.IO.Compression.ZipArchive zip= System.IO.Compression.ZipFile.OpenRead(src);

            string s = "";
            foreach (System.IO.Compression.ZipArchiveEntry t in zip.Entries)
            {
                s += t.FullName + "\r\n";

                byte[] bt=new byte[t.Length];
                Stream sm= t.Open();
                sm.Read(bt);
                using(FileStream fs=new FileStream(dst+t.FullName, FileMode.Create))
                {
                    fs.Write(bt, 0, bt.Length);
                }
                sm.Close();                
            }

            textBox2.Text = s;
        }