首页 > 编程问答 >如何在Android Java中访问android/data/文件夹(应用程序包)?

如何在Android Java中访问android/data/文件夹(应用程序包)?

时间:2024-07-21 04:18:47浏览次数:7  
标签:python java android

**我的应用程序的包名称是 com.gorlopsen。该应用程序必须上传了没有它就无法工作的文件。文件下载到存档中并解压到 android/data/com.gorlopsen 文件夹中。但是,在解压阶段,出现下载错误,导致应用程序无法使用。

在网上找到了有关访问所有文件的信息,但并不适合我。是否可以请求仅访问您自己的文件夹,以便解包过程成功完成?**

在互联网上,我找到了如何访问所有文件。但是,我只需要使用我的应用程序访问该文件夹。


你不需要特殊的权限就能访问你应用程序的内部存储目录 ( android/data/com.gorlopsen )。事实上,这是推荐用于存储应用程序私有数据的首选位置,因为它对你的应用程序来说是安全的,并且在卸载时会被自动清除。

问题可能出在你的解压缩代码上,而不是权限上。以下是使用 ZipInputStream 解压缩文件的 Java 代码示例:

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class UnzipUtil {

    public static void unzip(String zipFilePath, String destDir) throws IOException {
        File dir = new File(destDir);
        if (!dir.exists()) dir.mkdirs();
        FileInputStream fis = new FileInputStream(zipFilePath);
        ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
        ZipEntry ze;
        byte[] buffer = new byte[1024];
        int count;
        while ((ze = zis.getNextEntry()) != null) {
            // 如果是目录,则创建
            if (ze.isDirectory()) {
                File newDir = new File(dir, ze.getName());
                if (!newDir.exists()) newDir.mkdirs();
            } else {
                // 如果是文件,则写入
                File newFile = new File(dir, ze.getName());
                FileOutputStream fout = new FileOutputStream(newFile);
                while ((count = zis.read(buffer)) != -1) {
                    fout.write(buffer, 0, count);
                }
                fout.close();
                zis.closeEntry();
            }
        }
        zis.close();
    }
}

如何使用它?

  1. 获取应用程序的内部存储目录:
File filesDir = getFilesDir(); // 这将返回 /data/data/com.gorlopsen/files
String destDir = filesDir.getAbsolutePath(); // 获取绝对路径
  1. 调用解压缩方法:
String zipFilePath = "..."; // 你的 zip 文件路径
try {
    UnzipUtil.unzip(zipFilePath, destDir);
} catch (IOException e) {
    // 处理异常
}

这将在应用程序的内部存储目录中解压缩 zipFilePath 中的 zip 文件。

注意事项:

  • 确保你的应用程序具有 WRITE_EXTERNAL_STORAGE 权限,如果你要解压缩到外部存储器。
  • 处理可能发生的 IOException

如果问题仍然存在,请提供你的解压缩代码和相关的错误消息,以便我可以提供更具体的帮助。

标签:python,java,android
From: 78773745

相关文章

  • 当值来自函数 python unittest 时,如何模拟全局变量
    我必须在python中模拟全局变量,但变量值来自另一个函数。当我导入文件时,这个函数正在运行,但我想要那里的模拟值。secrets.pyimporttracebackimportloggingimportboto3importosimportjsonlogger=logging.getLogger()logger.setLevel(logging.INFO)secret_......
  • 使用 python print 和 gdb 时出现 BrokenPipeError
    我正在尝试在Linux中运行应用程序并使用Python生成输入:python3-c'print(".....")'|./someapp但出现下一个错误:Exceptionignoredin:<_io.TextIOWrappername='<stdout>'mode='w'encoding='utf-8'>BrokenPipeError:......
  • python 舰队容器
    我正在尝试使用容器在flet中制作一个菜单,它应该是半透明的,但其中的项目不是。我尝试将opacity=1分配给元素,但没有成功-它们与容器一样透明感谢任何帮助我的代码:nickname=ft.TextField(label="xxx",hint_text="xxx")column=ft.Column(controls=[nickname......
  • Python应用程序跨子包共享的配置文件
    我正在构建一个应用程序来控制一些硬件。我在包中实现了不同类型的硬件:电机和测量设备。我的文件结构如下:name_of_my_app/__init__.pymain.pyconfig.iniCONFIG.pymotors/__init__.pyone_kind_of_motor.pymeasurement_devices/......
  • python中时间序列数据的梯度计算
    我正在尝试编写一个函数,它可以从最适合下面的线返回梯度dataframe在浏览了谷歌的几个资源之后,我仍然不确定这是如何完成的。我明白最佳拟合线的计算公式为:y=mx+b将因变量(y)设置为foos,将自变量(x)设置为DateTimeDatafram......
  • 调试用 C 编写的 Python 扩展
    我非常熟悉编写C代码,并且很擅长编写Python代码。我正在尝试学习如何用C编写可以从OSX10.15.7上的Python-3.9.X调用的模块。我已经得到了几个“helloworld”类型的示例,但是对于复杂的示例,我正在努力弄清楚如何调试我编写的C扩展。MWE:src/add.c//......
  • 具有块大小选项的 Python pandas read_sas 因索引不匹配而失败并出现值错误
    我有一个非常大的SAS文件,无法容纳在我的服务器内存中。我只需要转换为镶木地板格式的文件。为此,我使用pandas中chunksize方法的read_sas选项分块读取它。它主要是在工作/做它的工作。除此之外,一段时间后它会失败并出现以下错误。此特定SAS文件有794......
  • 使用 requests 包 python 时打开文件太多
    我正在使用Pythonrequests包向API发出大量请求。然而,在某些时候,我的程序由于“打开的文件太多”而崩溃。当我明确关闭我的会话时,我真的不知道这是怎么回事。我使用以下代码:importrequestsimportmultiprocessingimportnumpyasnps=requests.session()s.keep......
  • Python 是一种选择性解释语言吗?为什么下面的代码不起作用?
    由于程序是从上到下运行的,为什么下面的代码不执行块中的第一行就直接抛出错误?if5>2:print("TwoislessthanFive!")print("Fiveisgreaterthantwo!")错误:文件“/Users/____/Desktop/Pythonpractise/practise.py”,第3行print("五比二大!")Indentati......
  • 裁剪时间变量 Python Matplotlib Xarray
    我不确定这是否是一个愚蠢的问题,但我想按时间变量剪辑.nc文件。我在xarray中打开了数据集,但以下ds.sel行(之前已运行)仅返回错误。ds=xr.open_dataset('/Users/mia/Desktop/RMP/data/tracking/mcs_tracks_2015_11.nc')selected_days=ds.sel(time=slice('2015-11-22',......