如何在android中压缩文件

2024-03-02

我需要以编程方式压缩 txt 文件。

我已经在 files 创建了文本文件directory(context.getFilesDirectory()),
我想压缩文本文件并将压缩文件添加到 Intent 对象中。

请给我一段代码来说明如何在android中压缩文件。


如果您在 SDCard 中有一个文件夹,并且想要创建它的 zip,那么只需将此代码复制并粘贴到您的项目中,它就会为您提供一个 zip 文件夹。此代码将创建一个 zip 文件夹,该文件夹仅包含文件,其中不应包含嵌套文件夹。您可以自行进一步修改。

 String []s=new String[2]; //declare an array for storing the files i.e the path of your source files
  s[0]="/mnt/sdcard/Wallpaper/pic.jpg";    //Type the path of the files in here
  s[1]="/mnt/sdcard/Wallpaper/Final.pdf"; // path of the second file

  zip((s,"/mnt/sdcard/MyZipFolder.zip");    //call the zip function


 public void zip(String[] files, String zipFile) 
 { 
    private String[] _files= files;
    private String _zipFile= zipFile;  

try  { 
  BufferedInputStream origin = null; 
  FileOutputStream dest = new FileOutputStream(_zipFile); 

  ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest)); 

  byte data[] = new byte[BUFFER]; 

  for(int i=0; i < _files.length; i++) { 
      Log.d("add:",_files[i]);
    Log.v("Compress", "Adding: " + _files[i]); 
    FileInputStream fi = new FileInputStream(_files[i]); 
    origin = new BufferedInputStream(fi, BUFFER); 
    ZipEntry entry = new ZipEntry(_files[i].substring(_files[i].lastIndexOf("/") + 1)); 
    out.putNextEntry(entry); 
    int count; 
    while ((count = origin.read(data, 0, BUFFER)) != -1) { 
      out.write(data, 0, count); 
    } 
    origin.close(); 
  } 

  out.close(); 
} catch(Exception e) { 
  e.printStackTrace(); 
} 

}

还可以使用此代码在 android-manifest.xml 中添加权限

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

如何在android中压缩文件 的相关文章

  • 如何设置长PreferenceScreen的滚动位置

    Android 应用程序有一些很长的首选项屏幕 它们始终在首选项菜单的顶部打开 我知道用户想要在首选项菜单中的位置 如何强制打开首选项屏幕并滚动到特定的首选项项目 我知道这是一个旧问题 所以这个答案仅供参考 要自动选择给定屏幕 您所要做的就
  • 强制关闭导致HTTP实体可能不为空

    这里是发送数据 Http 的完整代码 asynctask private class MyAsyncTaskPupuk extends AsyncTask
  • Android 服务 START_STICKY START_NOT_STICKY

    我需要让我的服务始终在后台运行 并使用 startService 函数启动我的服务 无论应用程序的状态如何 我都不想重新启动服务 这是我的观察 START STICKY gt 如果应用程序启动 则服务正在重新启动 当应用程序关闭时 服务也会
  • Android/java:从 ProGuard 过渡/迁移到 R8?

    我想知道如何从ProGuard to R8 我是否应该从 Gradle 文件中删除与 Proguard 相关的行并添加android enableR8 true线代替 Thanks Proguard 由 GuardSquare 开发和维护
  • 按钮上方带有文本的单选按钮

    我是 Android 新手 我需要在我的活动中添加单选按钮 但我需要将文本放在项目符号按钮的顶部 请提供任何帮助 我发现了以下内容 尽管我不明白 drawable in 选择器和 style Tab 样式是什么 顶部带有文本的单选按钮 ht
  • 如何修复运行 Android 模拟器时出现 GPU Driver Issue 错误

    我的 Android 模拟器几周前运行良好 但现在出现错误 当我运行代码时 GPU 驱动程序问题错误对话框与模拟器一起弹出 当我单击 确定 时 Android 模拟器不会按预期运行应用程序 错误如下 Your GPU driver info
  • 如何编写 adb jdwp + adbforward 脚本?

    我正在尝试使用命令行和脚本工具调试 Android 应用程序 我已经受够了 Android Studio 占用我的 CPU 要连接到我的应用程序 我需要adb jdwp获取 pid 然后adb forward tcp 8700 jdwp
  • 在应用程序之间共享自定义帐户验证器

    我有一个为使用自定义 AccountAuthenticator 的客户端构建的应用程序 它工作得非常好 并且满足了客户的需求 但是 这只是将使用相同身份验证管理器的应用程序集合中的第一个应用程序 这就是我不确定如何继续的地方 我无法知道任何
  • Android TabLayout:均匀分布

    我正在查看 Google IO 中使用的 Google 类 称为 SlidingTabLayout 在该类中 有一个名为 setDistributeEvenly 的方法 它允许所有这些选项卡在屏幕上均匀分布 每个选项卡具有相同的大小 中心对
  • 无法在 Android 中使用自定义数组适配器进行搜索?

    我无法从以下位置搜索listview 我尝试了各种方法 但它对我不起作用 没有错误 我有其他方式进行搜索 但我想让这种方式成为可能 这是代码 public class MainActivity extends Activity implem
  • toArray 与预先确定大小的数组

    使用时ar toArray new String ar size 安卓工作室3 2 1警告预先确定大小的数组并建议空数组 有两种方式将集合转换为数组 使用 预先确定大小的数组 如 c toArray new String c size 或使
  • 为什么 Android 上的免安装应用有两种设置?

    我使用的是运行 Android 11 的 Pixel 3 我发现有 2 种不同的设置可以控制免安装应用的某些方面 设置 应用程序和通知 默认应用程序 打开链接 即时应用程序 即使未安装 也打开应用程序中的链接 切换默认为开 Google P
  • 如何更改蜂窝中儿童偏好屏幕的背景颜色

    过去几天我一直在寻找解决方案 但找不到 我需要更改右窗格的背景颜色 我知道如何更改左父首选项的颜色 我在清单文件中创建了一个新主题
  • Android Studio错误的含义:未注释的参数覆盖@NonNull参数

    我正在尝试 Android Studio 创建新项目并添加默认值后onSaveInstanceState方法创建 MyActivity 类 当我尝试将代码提交到 Git 时 我收到一个我不明白的奇怪错误 代码是这样的 我得到的错误是这样的
  • 尝试重新打开已关闭的对象:sqlitequery

    所以本质上我查询数据库两次 我不明白这个错误真正来自哪里 因为我没有在任何地方关闭数据库 返回错误的代码是这样运行的 我查了一下 刚刚看到一个像我这样的案例 BeaconHandler pullAllDB new BeaconHandler
  • 如何根据受保护的 String doInBackground 方法中 AsyncTask 的结果调用 Toast.makeText() ?

    我从 AsyncTask 中的数据库中获取数据 如果它为空 我想吐司一个警告文本 我在 AsyncTask 中尝试过 但我了解到它不是在工作线程中调用的 这是我的 doInBackground 方法 protected String doI
  • Android:在surfaceview上实现admob

    我有一个使用 SurfaceView 的小游戏形式的活动 下面是代码片段 我很困惑如何在 SurfaceView 上实现 admob 请建议 public class DroidzActivity extends Activity priv
  • Android 使用不同的签名密钥更新市场应用程序

    开发人员使用他的个人密钥库签署了应用程序 但它应该是公司的密钥库 现在是否可以使用公司的密钥库更新市场中的应用程序 并且仍然可以简化对用户的更新 这有什么后果吗 不可以 您必须将该应用程序作为新应用程序发布到市场上 这次是用公司的key签名
  • 找不到与给定名称“@style/Theme.AppCompat.Light”匹配的资源

    我已经研究这个问题几个小时了 从 github 下载存储库后 任何 xml 文件中的唯一错误是 No resource found that matches the given name style Theme AppCompat Ligh
  • 带有包含布局的导航抽屉布局

    我认为我的问题实际上很简单 但我不知道如何解决 有一个工作导航抽屉 代码如下

随机推荐

  • Hibernate:使用公式进行多对一

    我希望有人能帮我找到答案 我正在使用旧数据库 无法更改任何预先存在的表 因为其他应用程序依赖于它们 我有三个主要的现有表 A B C A 有一个引用 B 的列 多对一关系 问题是它应该与 C 而不是 B 有关系 所以我创建了一个 1 映射
  • 仅关闭 Web 服务的 customErrors

    我的 ASP NET 2 0 Web 应用程序包含一个 Web 服务 它会引发各种异常以及自定义错误消息 例如 您无权访问此项目 等 这些显示在屏幕上的 ASP NET AJAX 回调处理程序中 应用程序的其余部分由一些自定义错误页面覆盖
  • Android WifiManager::getScanResults() 仍然返回空列表

    作为 Android 编程的新手 我正在尝试使用 WifiManager 获取 SSID 列表getScanResults 方法 但它仍然是空的 即使我已经授予它ACCESS COARSE LOCATION许可以及CHANGE WIFI S
  • 如何从列表中删除weakReference?

    我有一个 java 中对象的弱引用列表 我如何编写一个方法来获取真实对象实例并从此列表中删除它的弱引用 thanks 不太清楚你的意思 但我认为你may want public static
  • AMP 中是否可以使用 AJAX 加载嵌入内容?

    快速问题 是否可以动态加载内容 例如
  • 在 Visual Studio Code 上调试 Nativescript 不起作用

    我可以使用 cmd 来运行我的 nativescript 项目 tns run android 我在 VSCode 中打开项目 然后添加配置来调试它 我点击了调试 看起来调试尝试运行什么的 看看调试下的绿色条 但是 似乎没有任何运行 我查看
  • ggplot2:geom_point() 闪避形状但不闪避颜色

    我试图在 ggplot2 中使用 geom point 绘制一个图 其中变量映射到 x y 颜色和形状 并躲避颜色但不形状的位置 x tibble Color c rep A 12 rep B 12 rep C 12 Shape rep c
  • 在 Firefox 中全局阻止文本选择

    我目前正在使用 webkit touch callout none webkit user select none khtml user select none moz user select none ms user select non
  • 隐藏除单个嵌套 div 之外的所有网页项

    假设我的网页有这样的结构 div div div p Content p div Blah div p More content p span class and another thing Meh span div div div div
  • 如何查找 PowerShell cmdlet 的 DLL 路径

    我正在使用从模块导入的一些 cmdlet 并且想找出 DLL 的物理位置 以便我可以在它们上使用 dotPeek 或 Reflector 有没有办法以某种方式找出DLL路径 try with get command my cmdlet dl
  • 强制 numpy 创建对象数组

    我有一个数组 x np array 1 2 3 4 5 6 我想创建另一个数组shape 1 1 and dtype np object其唯一元素是 x 我试过这段代码 a np array x dtype np object 但它产生了一
  • 使用 str.replace 从 pandas 中的字符串中删除括号

    我有一个国家 地区列表 其中一些国家 地区后面有空格和括号 例如 玻利维亚 多民族国 为什么我下面的代码不能只保留 玻利维亚 energy Country energy Country str replace Bolivia Plurina
  • 查找物料/仓库的总可用量和可用实物

    我有一个显示字段的方法 它执行以下操作 return InventSum find salesLine ItemId InventDim salesLine InventDimId AvailPhysical 这为我提供了该线路站点 仓库
  • Regex101 与 Oracle 正则表达式

    我的正则表达式 0 digit digit 0 它正在删除十进制数中的前导 以及前导和尾随 0 我已经测试过了regex101 https regex101 com r erFPtk 2 对于输入 000099 8420000和替代 1 2
  • Liferay主题中包含jQuery和其他JS文件

    我使用 Liferay 6 1 并创建了我的主题 sample theme 我想添加jQuery 我怎样才能做到这一点 为什么我有文件夹 sample theme and liferay work两者都有文件夹 css js 模板 我创建了
  • 宏范围内的 Cmake 全局变量

    我正在尝试创建一个全局列表 并且希望将其附加到宏中 这是我的设置 project CMakeLists txt level1 CMakeLists txt level2a CMakeLists txt level2b CMakeLists
  • 如何访问knockout.js模板中项目的索引

    在下面 tbody 的模板中 如何访问正在呈现的项目的索引 table tbody tr class contactRow valign top td a href Delete a td td td tr tbody table
  • 需要捕获 MS Word 中的当前滚动位置(不是光标位置)

    我需要获取Word文档中当前的滚动位置 我认为这是正确的术语 即我的虚拟镜头指向文档的位置 而不是光标所在的位置 以便当我运行宏时我可以返回到最后的那个位置 我编写了一个宏 从当前光标位置向后搜索专利申请零件号 将候选下一个可用零件号确定为
  • Bootstrap 3表单和表单最后一行背景颜色

    在我们的表格中 我们尝试 向表单添加背景颜色并 表单最后一行的背景颜色 通常包含我们的按钮 问题是最后一行的背景颜色未正确对齐 您将看到最后一行的大小超出了表单宽度 请参见 http jsfiddle net 4ThKn 2 http js
  • 如何在android中压缩文件

    我需要以编程方式压缩 txt 文件 我已经在 files 创建了文本文件directory context getFilesDirectory 我想压缩文本文件并将压缩文件添加到 Intent 对象中 请给我一段代码来说明如何在androi