android - ZipStorer 不在 Android c# 中创建任何文件

标签 android zip xamarin

您好,我正在使用 Xamarin 和 C# 来制作一个可以压缩和解压缩文件的应用程序,所以经过几次尝试后我找到了 zipStorer。

http://zipstorer.codeplex.com/

这是我的代码

 ZipStorer zip = ZipStorer.Open(Convert.ToString(Android.OS.Environment.GetExternalStoragePublicDirectory("BrSatisfacao/aaa.zip")), FileAccess.Read);

                List<ZipStorer.ZipFileEntry> dir = zip.ReadCentralDir();

                string path;

                foreach (ZipStorer.ZipFileEntry entry in dir)

                {

                    if (Path.GetFileName(entry.FilenameInZip) == "08.jpg")

                    {

                        path = Path.Combine(Convert.ToString(Android.OS.Environment.GetExternalStoragePublicDirectory("BrSatisfacao/")), Path.GetFileName(entry.FilenameInZip));

                        zip.ExtractFile(entry, Convert.ToString(Android.OS.Environment.GetExternalStoragePublicDirectory("BrSatisfacao/sample.jpg")));

                        break;

                    }   

                }

                zip.Close();

几个小时后,代码运行正常并打开 zip 并在控制台中显示所有内容,但没有创建 zip ...我做错了什么吗?

最佳答案

ZipStorer 内部使用字符集 437 进行编码和反编码(ZipStorer.cs 中的第 85 行):

    private static Encoding DefaultEncoding = Encoding.GetEncoding(437);

在您构建应用程序时,Xamarin 默认不包含此字符集。如 Localisation And Internationalisation 中所述文档:

为了减小应用程序的大小,Xamarin.iOS 不包含任何特定的编码,您必须指示 mtouch 包含支持所需编码的程序集。

要包含字符集,请通过应用程序中的国际化设置添加 West 字符集:

enter image description here 确保为 DebugRelease 检查此项。

当我向我的应用程序添加 zip 支持时,我无法让它为我工作。最后,我通过使用 Java IO 库推出了自己的 zip 支持,但可能有一个组件可用于添加跨平台 zip 支持。

关于android - ZipStorer 不在 Android c# 中创建任何文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20225175/

相关文章:

java - 通过 Intent 在选项卡式 Activity 中编辑 TextView - Android

java - 从安卓连接到 XMPP 服务器

xamarin 绑定(bind) 'Jsgf' 未实现接口(interface)成员 'IIterable.Iterator()

c# - 命令和触发器之间的主要区别是什么? (Xamarin)

c# - Monotouch (Xamarin.iOS) 内存泄漏

android - 如何处理耳机 Hook 的双击?

java - Android 无法更新 ArrayAdapter,因为 "Non-Static method ' notifyDataSetChanged( )' cannot be referenced from a static context"

c# - 在 C# 中解压文本

c# - 提供下载链接而不在服务器上创建文件

gradle - gradle 构建中不需要的 tar、zip、jar 分布