如何在 Xamarin for Android 中压缩文件?

2024-04-07

我有一个函数可以创建一个 zip 文件和传递的文件字符串数组。该函数确实成功创建了 zip 文件及其内部的 zip 条目文件,但这些 zip 条目文件是空的。我尝试了几种不同的方法 - 下面的函数代码是我最接近的工作代码:

    public static bool ZipFile(string[] arrFiles, string sZipToDirectory, string sZipFileName)
    {
        if (Directory.Exists(sZipToDirectory))
        {
            FileStream fNewZipFileStream;
            ZipOutputStream zos;

            try {
                fNewZipFileStream = File.Create(sZipToDirectory + sZipFileName);
                zos = new ZipOutputStream(fNewZipFileStream);

                for (int i = 0; i < arrFiles.Length; i++) {
                    ZipEntry entry = new ZipEntry(arrFiles[i].Substring(arrFiles[i].LastIndexOf("/") + 1));
                    zos.PutNextEntry(entry);

                    FileStream fStream = File.OpenRead(arrFiles[i]);
                    BufferedStream bfStrm = new BufferedStream(fStream);

                    byte[] buffer = new byte[bfStrm.Length];
                    int count;
                    while ((count = bfStrm.Read(buffer, 0, 1024)) != -1) {
                        zos.Write(buffer);
                    }

                    bfStrm.Close();
                    fStream.Close();
                    zos.CloseEntry();
                }
                zos.Close();
                fNewZipFileStream.Close();
                return true;
            }
            catch (Exception ex)
            {
                string sErr = ex.Message;
                return false;
            }
            finally
            {
                fNewZipFileStream = null;
                zos = null;
            }
        }
        else
        {
            return false;
        }
    }

我认为这与字节流处理有关。我已经尝试过这段处理流的代码,但它进入了无限循环:

while ((count = fStream.Read(buffer, 0, 1024)) != -1) {
        zos.Write(buffer, 0, count);
}
fStream.Close();

我找到了一个非常简单的解决方案 - 我使用静态 File 类的 ReadAllBytes 方法。

ZipEntry entry = new ZipEntry(arrFiles[i].Substring(arrFiles[i].LastIndexOf("/") + 1));
zos.PutNextEntry(entry);

byte[] fileContents = File.ReadAllBytes(arrFiles[i]);
zos.Write(fileContents);
zos.CloseEntry();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Xamarin for Android 中压缩文件? 的相关文章

  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • 删除Android所有语言中的字符串

    我有一个包含多个翻译的应用程序 我想删除一些字符串 我怎样才能重构并删除它们一次 例如在默认情况下strings xml文件并自动将删除传播到其他翻译的其他 strings xml 文件 您可以通过 Android Studio 中的 翻译
  • try-catch 中未处理的异常

    try list from XElement e in d Descendants wix File where e Attribute Name Value Contains temp Name e Parent Parent Attri
  • std::map 和二叉搜索树

    我读过 std map 是使用二叉搜索树数据结构实现的 BST 是一种顺序数据结构 类似于数组中的元素 它将元素存储在 BST 节点中并按其顺序维护元素 例如如果元素小于节点 则将其存储在节点的左侧 如果元素大于节点 则将其存储在节点的右侧
  • 转到 C# WPF 中的第一页

    我正在 WPF 中使用导航服务 为了导航到页面 我使用 this NavigationService Navigate new MyPage 为了返回我使用 this NavigationService GoBack 但是如何在不使用的情况
  • 为什么 std::allocator 在 C++17 中丢失成员类型/函数?

    一边看着std 分配器 http en cppreference com w cpp memory allocator 我看到成员 value type pointer const pointer reference const refer
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 通过不同 DLL 或 EXE 中的指针或引用访问 STL 对象时发生访问冲突

    我在使用旧版 VC6 时遇到以下问题 我只是无法切换到现代编译器 因为我正在处理遗留代码库 http support microsoft com kb 172396 http support microsoft com kb 172396
  • Android - iphone 风格 tabhost [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 Android 布局 xml 文件中使用字符串格式参数 [重复]

    这个问题在这里已经有答案了 我在 String xml 文件中定义了一个使用格式参数的字符串 即
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • 在 C 中复制两个相邻字节的最快方法是什么?

    好吧 让我们从最明显的解决方案开始 memcpy Ptr const char a b 2 调用库函数的开销相当大 编译器有时不会优化它 我不会依赖编译器优化 但即使 GCC 很聪明 如果我将程序移植到带有垃圾编译器的更奇特的平台上 我也不
  • 更改Android菜单的背景颜色[重复]

    这个问题在这里已经有答案了 我正在尝试将标准浅灰色更改为浅绿色 似乎没有一个简单的方法可以做到这一点 例如 通过 Android 主题 但我找到了一个解决方法 如本页所述 http tinyurl com 342dgn3 http tiny
  • android:layout_alignParentBottom 在没有显式布局高度作为 ListView 中的行的情况下使用时会被忽略

    当我使用RelativeLayout与任一fill parent or wrap content作为高度和一个指定的元素 android layout alignParentBottom true 它被忽略并在顶部对齐 设置高度Relati
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • 无法使用 Ninject 将依赖项注入到从 Angular 服务调用的 ASP.NET Web API 控制器中

    我将 Ninject 与 ASP NET MVC 4 一起使用 我正在使用存储库 并希望进行构造函数注入以将存储库传递给其中一个控制器 这是实现 StatTracker 接口的上下文对象 EntityFramework public cla
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • Android ADT Eclipse 插件,parseSDKContent 失败

    我刚刚设置了我的第一个 Android 开发环境 其中包括 日食3 5 Mac OS X 10 5 适用于 x86 mac 的 Android SDK ADT Eclipse 插件 0 9 6 我已将 set PATH 设置为我的 SDK
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将

随机推荐

  • Twitter Bootstrap 单选框/复选框 - 如何放置字形图标

    使用 TB 是否可以设置单选按钮或复选框的样式 使其显示字形而不是单选按钮或复选框的默认样式 我想用一个glyphicon glyphicon star表示未选中 然后glyphicon glyphicon star empty来表示已检查
  • 这是seaborn.lineplot 色调参数中的错误吗?

    通过此代码片段 我期望得到一个每种色调一条线的线图 它具有以下不同的值 1 5 10 20 40 import math import pandas as pd import seaborn as sns sns set style whi
  • Javascript 闭包解释 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 问题 闭包似乎有很多好处 但有哪些缺
  • 如何删除动态数组?

    我在这个问题的帮助下构建了一个数组 如何在 C 中使用 new 声明二维数组 https stackoverflow com questions 936687 how do i declare a 2d array in c using n
  • “tuple”对象不支持项目分配

    我正在使用 PIL 库 我正在尝试使图像看起来更红 这就是我所拥有的 from PIL import Image image Image open balloon jpg pixels list image getdata for pixe
  • 将字节数组转换为 CGImage

    我在无符号字符数组中有图像的灰度值 我想将其转换为CGImage这样我就可以使用它在 iOS 中显示它UIImage unsigned char 数组的每个值都是灰度图像的像素值 我正在使用以下代码 但图像未显示 void viewDidL
  • 与不使用 if 的测试相比,if 语句的效率如何? (C++)

    我需要一个程序来获取两个数字中较小的一个 我想知道是否使用标准 如果 x 小于 y int a b low if a lt b low a else low b 比这个更有效率或更低 int a b low low b a b a b gt
  • Excel:找出单元格是否包含/包含一系列单元格中的值

    我有一个职位列表 A 和短语列表 B 对于 A 中的每个标题 我想检查它是否包含 B 中的短语 任何短语 我不在乎是哪个 1 Example Column A Example Column B 2 Head of Marketing Sen
  • Kafka 无法在 Azure Web 应用服务上运行

    我们正在尝试在 Azure Web 应用服务上部署 Kafka 我们不断收到以下错误 容器 NN 未响应端口 2181 上的 HTTP ping 站点启动失败 请参阅容器日志进行调试 WEBSITES PORT 设置为 2181 并且在 D
  • 密码自加密可行吗?

    我一直在阅读有关密码存储的内容 基本上发现了两种常用的技术 使用单个密钥对存储的所有密码进行加密 Using hashes 使用带盐的哈希值 存储 自行加密 的密码是否存在缺陷 即加密一个txt 其中写着password1用密码passwo
  • AngularJS 如何发送多部分/混合

    我正在开发一个项目 我必须在 AngularJS 中上传少量 JSON 和文件 我已经使用 Danial Farid 的 Angular file upload 编写了代码 并且它正在工作 除了它总是发送 multipart form da
  • 运行 flutter doctor 时 Android 许可证状态未知

    我无法运行 flutter 应用程序 因为 Android 许可证未知的 cmd 部分中不断弹出错误 我什至尝试过更新 android studio 但没有帮助 还出现了一个错误 但我交叉检查了它要求删除的文件已经被删除 并且 androi
  • ASP.NET MVC - 使用相同的表单来创建和编辑

    创建用于创建新模型和编辑现有模型的表单的最佳实践方法是什么 人们可以为我指明方向吗 书呆子晚餐 http nerddinner codeplex com will really指明道路 创建 aspx
  • 如何从 webServiceTemplate 获取肥皂响应

    我需要使用 webServiceTemplate 获得肥皂响应 目前 在我现有的架构中 它使用函数 public boolean sendSourceAndReceiveToResult String uri Source requestP
  • 抗锯齿模式差异?

    这两种抗锯齿模式有区别吗 e Graphics SmoothingMode Drawing2D SmoothingMode AntiAlias e Graphics SmoothingMode Drawing2D SmoothingMode
  • Jekyll 中 localhost 和 github 页面的 Baseurl 行为不同

    我正在开发一个静态网站Jekyll 部署于github pages 我在使用配置文件中的 baseurl 时遇到问题 这是我的摘录 config yml baseurl blog url http remidoolaeghe github
  • Python:getopt、批处理文件和带空格的路径

    我正在使用 getopt 来解析选项和参数 我编写了一个批处理文件来调用 python 脚本 这样我就不必一遍又一遍地输入相同的命令 当我打印出参数列表时 路径被空格分割 并且每个路径都被单独解析 该路径用双引号引起来 但我不确定问题是什么
  • 无法配置 HTTPS 端点。未指定服务器证书,找不到默认的开发者证书

    我正在开发一个已配置 HTTPS 的结构应用程序 尽管我有有效的安装证书 但它抛出异常 这些说明来自这个博客 https www waynethompson com au blog dotnet dev certs https 为我工作 d
  • PHP:如何在字符串中的随机位置添加随机字符

    如何在字符串中的随机位置添加单个随机字符 0 9 或 a z 或 或 我可以通过以下方式获得随机位置 random position rand 0 5 现在我怎样才能得到一个随机数 0到9 OR随机字符 a 到 z OR OR 最后 我如何
  • 如何在 Xamarin for Android 中压缩文件?

    我有一个函数可以创建一个 zip 文件和传递的文件字符串数组 该函数确实成功创建了 zip 文件及其内部的 zip 条目文件 但这些 zip 条目文件是空的 我尝试了几种不同的方法 下面的函数代码是我最接近的工作代码 public stat