如何在android中压缩文件夹以制作docx文件?

2024-04-22

我正在尝试制作一个 Android 应用程序,可以打开 docx 文件来读取、编辑和保存它。

我的想法是将存档中的所有 xml 文件提取到临时文件夹中。在这个文件夹中我们可以编辑docx的内容/word/document.xml。问题是当我压缩这个临时文件夹以创建新的 docx 文件并替换旧文件时,新的 docx 存档内的路径如下/mnt/sdcard/temp/"all files xml go here"而xml文件应该在第一层。

有人能帮我解决这个问题吗?这是压缩临时目录的方法

注意:我使用的 dir2zip 参数的值是/mnt/sdcard/temp/***.docx

public void zipDir(String dir2zip, ZipOutputStream zos)
{
    try
   {
        //create a new File object based on the directory we
        //have to zip File   
        File zipDir = new File(dir2zip);

        //get a listing of the directory content
        String[] dirList = zipDir.list();
        byte[] readBuffer = new byte[2156];
        int bytesIn = 0;

        //loop through dirList, and zip the files
        for(int i=0; i<dirList.length; i++)
        {
            File f = new File(zipDir, dirList[i]);
            if(f.isDirectory())
            {
                    //if the File object is a directory, call this
                    //function again to add its content recursively
                String filePath = f.getPath();
                zipDir(filePath, zos);
                    //loop again
                continue;
            }
            //if we reached here, the File object f was not a directory
            //create a FileInputStream on top of f
            FileInputStream fis = new FileInputStream(f);
            //create a new zip entry
            ZipEntry anEntry = new ZipEntry(f.getPath());
            //place the zip entry in the ZipOutputStream object
            zos.putNextEntry(anEntry);
            //now write the content of the file to the ZipOutputStream
            while((bytesIn = fis.read(readBuffer)) != -1)
            {
                zos.write(readBuffer, 0, bytesIn);
            }
           //close the Stream
           fis.close();
        }
    }
    catch(Exception e)
    {
        //handle exception
    }
}

我已经设法自己修好了。问题出在这一行:

    File f = new File(zipDir, dirList[i]);

它应该是

    File f = new File(dirList[i]);

如果包含参数 zipDir,则归档中将使用目录的绝对路径!

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

如何在android中压缩文件夹以制作docx文件? 的相关文章

  • BLE 外设支持 Android-L 示例 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我希望有一个适用于 Android L 的 BLE 外设模式的示例 我的代码给了我奇怪的错误 即广告商太多 这没有任何意
  • 不同 Android 设备上 box2D 中出现奇怪的“口吃”

    我正在用 C 同时开发引擎和游戏 并使用 box2D 作为物理后端 我正在不同的 Android 设备上进行测试 在三分之二的设备上 游戏运行良好 物理效果也很好 然而 在我的 Galaxy Tab 10 1 上 我偶尔会遇到某种 口吃 的
  • 使用 GoogleServices 插件时忽略 Gradle ArchivesBaseName

    我经常使用 archivesbasename 来重命名我的输出 apk 但自从使用 google services 插件后 它就被忽略了 我能做些什么来让它再次工作吗 下面附上了我完整的 build gradle 感谢您的指点 apply
  • Android自定义控件命名空间问题

    我一直在为 Android 开发自定义控件 尽管我尝试按照建议进行操作here https stackoverflow com questions 4495511 how to pass custom component parameter
  • 毕加索磁盘缓存

    我正在使用 Picasso 从 URL 加载图像 Picasso with getApplicationContext load product getImageUrl into imageView 据我所知 每次都会访问该网址 而不是缓存
  • 编译后从字节代码中删除注释

    我们正在使用一个包含使用 JAXB 注释进行注释的 bean 的库 我们使用这些类的方式完全不依赖于 JAXB 换句话说 我们不需要 JAXB 也不依赖注释 但是 由于注释存在 它们最终会被处理注释的其他类引用 这要求我将 JAXB 捆绑到
  • BluetoothAdapter.getDefaultAdapter() 不返回 null

    这是我的第一篇文章 所以如果我做了一些愚蠢的事情 请告诉我 这个问题可能看起来与其他帖子类似 但或多或 少与我所看到的所有内容相反 关于该项目的事情 我正在开发 android 4 0 4 4 应用程序 我正在使用蓝牙 我正在运行 andr
  • 如何在 Android 应用程序中单击按钮时打开 Gmail Compose?

    当我的 Android 应用程序中单击按钮时 我尝试打开 Gmail 撰写屏幕 我需要 Google 提供的 API 密钥吗 或者我需要在按钮 onClickListener 中做什么 任何形式的见解都非常值得赞赏 正如 JeffC 指出的
  • 需要在 Android 中伪造正在扫描的 NFC 标签

    好的 我有一个应用程序 此应用程序仅在扫描 NFC 标签 任何标签 时才会完成任务 唯一的问题是 我没有任何 nfc 标签 无论如何 我正试图消除对卡的需要 所以我需要的是一种 伪造 使其看起来 就像已扫描 nfc 标签的方法 我可以编写应
  • 在 Android 中始终以横向模式打开相机

    在我的 Android 应用程序中 单击按钮后我希望相机以横向模式打开 即使我将手机旋转为纵向模式 相机也应始终处于横向模式或纵向模式 使用此代码在横向模式下打开相机 Intent cameraIntent new Intent Media
  • 无法在云控制台中启用 Maps SDK for Android

    我在云控制台中启用适用于 Android 的 Maps SDK 时遇到此问题 https console cloud google com https console cloud google com 它会抛出以下错误 附截图 我收到错误消
  • Android BLE 扫描在后台几分钟后停止

    当我为公司开发新冠肺炎接触者追踪应用程序时 我在后台遇到了 Android 扫描停止问题 这是我尝试过的 添加前台服务 禁用手机中所有与电池相关的优化选项 启用后台运行的应用程序 测试设备 搭载 Android 10 的 Galaxy S2
  • 如何使用 Swipe 视图实现 Android TabLayout 设计支持库

    我将使用 android TabLayout 设计支持库 但我不知道如何使用滑动视图 这是我的代码 XML
  • 按名称获取 ArrayList

    这是正确的获取方式吗ArrayList
  • 在 android 版本 7.0 上膨胀类 android.widget.DatePicker 时出错

    我想显示弹出日期选择器并且我使用此代码 Calendar mcurrentDate Calendar getInstance int mYear mcurrentDate get Calendar YEAR int mMonth mcurr
  • 无法登录 Google Play 游戏服务

    我在开发者控制台上使用包名称和正确的签名证书设置了我的游戏 并为其创建了排行榜 但没有创建任何成就 然后 我从以下位置下载了示例 Type A Number Challenge 和 BaseGameUtils https developer
  • BitmapFactory.decodeResource() 忽略 jpg 图像的 inPreferredConfig 选项

    我尝试将jpeg资源图像加载到ARGB 8888格式的位图 BitmapFactory Options opts new BitmapFactory Options opts inPreferredConfig Bitmap Config
  • 在片段之间切换时底部导航栏会向下推

    在我的活动中 我有一个底部导航栏和框架布局来显示片段 一切正常 但问题是当我开始按顺序从 1 4 移动时 底部导航栏保持在其位置 但当我突然从 4 跳到2 然后底部导航栏就会超出屏幕 当再次单击同一项目时 它就会回到正常位置 该视频将清楚地
  • 如何在 onDraw() 方法中定义与像素无关的高度

    我扩展了 View 来构建自定义小部件 我想用独立的像素单位定义小部件的高度 我认为可以通过将像素密度乘以所需的高度来完成 但我不知道该怎么做 到目前为止我所拥有的 最小化 public class Timeline extends Vie
  • Android Espresso - 如果未选中,请单击复选框

    I have onView withId R id check box perform click 但我只想在尚未选中该复选框时执行此操作 我怎样才能在浓缩咖啡中做到这一点 我还想根据其之前的状态来切换复选框 开关 起初 我尝试用此方法打开

随机推荐

  • 移动光标位置?

    使用下面的代码 我想将屏幕上的光标移动到点 200 200 效果很好 但是当我 用手 移动鼠标时 光标立即返回到其原始位置 我究竟做错了什么 我在跑步XP on a KVM虚拟机运行在linux主机 这并不影响该程序的运行方式 我还尝试了各
  • 代理 golang https

    我正在努力让一个人进来https www google com https www google com使用带有身份验证的代理 我已经传递了标头参数 代理授权 但代理服务器返回 需要代理身份验证 code package main impo
  • Paper-fab 部分隐藏在应用程序工具栏后面

    我想导入一个包含paper fab并拥有paper fab重叠之间的接缝app header元素和导入的元素 在本例中 我将导入的元素称为fab element 换句话说 我只是想要paper fab 漂浮 正如广告所言 就像它应该的那样
  • Android 邮件发送验证

    我使用下面的代码将电子邮件发送到可能的电子邮件地址 当我单击 发送 按钮时 有一条 toast 消息显示 消息发送 但我的代码中没有它 它必须是默认的 我的问题是 这表示消息将被发送 但没有说明消息已发送 我知道无法检查它是否到达 但应该有
  • 将 webpack 应用于全栈节点应用程序最合理的方式是什么?

    我已经研究 webpack 几个星期了 我已经看到了很多前端设置的例子 可能只是这是后端的设置 http jlongster com Backend Apps with Webpack Part I 我正在尝试设置一个带有节点后端 例如ex
  • 从android中的drawable文件夹中随机生成图像

    安卓版本 4 2我正在开发一个安卓应用程序 我需要从可绘制文件夹中随机生成图像 在我的绘图中 我有 45 张具有不同名称的图像 我的xml代码是
  • 在 C 中使用 Go 切片

    我正在尝试构建一个带有返回切片的函数的 go 共享库 如何使用 C 代码中的切片 package main import C type T struct A C int B C char export Test func Test T ar
  • Active Directory“-approx”过滤器运算符如何工作?

    查看 AD Cmdlet 时 Filter今天早些时候 我遇到了一个我以前从未见过的操作员 approx 我可以在几个博客和一些 TechNet 文章中找到提到此运算符 但我没有找到任何解释此运算符的用途的信息 除了 大约等于 的使用定义之
  • 如何使用 Node.js 按需解析记录?

    是否有一个 Node 模块可以从 CSV 文件中解析特定数量的记录 用例是解析大型日志文件并根据请求将记录传送到分页客户端 node csv https github com wdavidw node csv can t yet https
  • 设置持续时间格式,如 HH:mm:ss

    有没有一种好方法可以将持续时间格式化为 hh mm ss 之类的格式 而不必处理时区 我试过这个 DateTime durationDate DateTime fromMillisecondsSinceEpoch 0 String dura
  • NET40-RequiresCastle 和 NET40 版本的 Moq 有什么区别?

    在moq的发行版中 有两个版本 NET40 RequiresCastle和NET40 NET40 RequiresCastle 看起来比 NET40 小得多 但在运行时需要 Castle 区别只是因为 Castle 嵌入在 NET40 版本
  • 带有连字符的 ActionLink htmlAttributes

    这有效 a href Url Action class ui btn right Edit a 但这不是 为什么 Html ActionLink Edit edit markets new id 1 new class ui btn rig
  • 在netbeans中使用视觉摆动JPopupmenu

    我想向我的应用程序添加一个弹出菜单 但是当我将它添加到我的面板时 我看到它消失了 我如何像其他菜单一样直观地编辑 jpopup 菜单 我认为您正在谈论在 NetBeans 中使用 matisse 视觉设计器 在这种情况下 该过程与创建只需将
  • 如何使用命名空间从 XML 中“选择”?

    我有一个类似 的 XML 文档
  • setattr 和 getattr 方法

    我有一个锅炉板类 它将一些操作委托给参考类 它看起来像这样 class MyClass def init self someClass self refClass someClass def action1 self self refCla
  • 使用数据库游标有什么好处?

    这是基于我面临的面试问题 非常短的定义可以是 它可用于操作行 由查询返回 除了使用光标之外 列出了点here http msdn microsoft com en us library ms191179 aspx在MSDN上 我心中有一个问
  • Haskell:单词,取消单词分隔符

    有什么办法可以提供分隔符words and unwords在haskell中 使其类似于python中的split和join 另请查看友好的包裹split 它提供了一个模块Data List Split http hackage haske
  • 从 ANT 运行 BAT 文件

    我浏览了论坛上的许多帖子 但无法整理出来 我正在尝试从 ANT 脚本运行 BAT 文件 文件夹层次结构是这样的 Project build xml build C test bat 我编写的 ANT 文件是
  • Railstutorial.org - 未定义的方法“工厂”

    我正在尝试关注 Railstutorial org 目前正在阅读第 7 章 您将在其中开始使用工厂 http railstutorial org chapters modeling and viewing users two sec tes
  • 如何在android中压缩文件夹以制作docx文件?

    我正在尝试制作一个 Android 应用程序 可以打开 docx 文件来读取 编辑和保存它 我的想法是将存档中的所有 xml 文件提取到临时文件夹中 在这个文件夹中我们可以编辑docx的内容 word document xml 问题是当我压