HarmonyOS鸿蒙Next中开发时应该将数据文件存放在哪里,才能在安装后文件存储在沙箱目录的files里

HarmonyOS鸿蒙Next中开发时应该将数据文件存放在哪里,才能在安装后文件存储在沙箱目录的files里 如题

参考了这些文档
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/resource-categories-and-access-V5
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-sandbox-directory-V5

https://developer.huawei.com/consumer/cn/doc/best-practices-V5/bpta-file-native-side-V5

文档中提到了 rawfileresfile 这两个文件夹

  1. rawfile 的路径不清楚,只提供了 resourceManager 的访问接口
  2. resfile 可以新建一个目录,通过 resourceDir 访问,但是我打印出来看到的路径是
/data/storage/el1/bundle/entry/resources/resfile

然而在 NativeFileAccess 示例 中提到的自己拼接沙箱路径是

char pathBuf[256] = "/data/storage/el2/base/haps/entry/files/SplicePath.txt";

不使用 rawfile 相关接口的原因是 原来的程序使用 ifstream 完成文件操作,改动较大
或者是否有 shell 命令能够有权限想内容从其他目录拷贝过去,华为虚拟机似乎目前不提供 root 权限


更多关于HarmonyOS鸿蒙Next中开发时应该将数据文件存放在哪里,才能在安装后文件存储在沙箱目录的files里的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

哦,把问题解决了,目前的方法是把数据放在res目录下,用路径直接访问,目前来看权限没什么问题

更多关于HarmonyOS鸿蒙Next中开发时应该将数据文件存放在哪里,才能在安装后文件存储在沙箱目录的files里的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


如果需要保存到文件管理器,需要使用 picker 对应API,使用方式可参考: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/save-user-file-0000001774120434

有办法直接放在沙箱目录吗

在HarmonyOS鸿蒙Next中开发时,若要将数据文件存放在安装后的沙箱目录的files里,可以使用Context类提供的getFilesDir()方法获取应用沙箱目录下的files路径。具体步骤如下:

  1. 获取files目录路径:通过context.getFilesDir()方法获取应用沙箱目录下的files路径。该路径为应用私有目录,其他应用无法访问。

  2. 创建或写入文件:使用File类或相关I/O操作在获取的files目录路径下创建或写入文件。例如:

    const filePath = context.getFilesDir() + '/myfile.txt';
    const file = new File(filePath, 'w');
    file.write('Hello, HarmonyOS');
    file.close();
    
  3. 读取文件:同样可以通过File类或相关I/O操作读取files目录下的文件内容。例如:

    const filePath = context.getFilesDir() + '/myfile.txt';
    const file = new File(filePath, 'r');
    const content = file.read();
    file.close();
    

通过以上方法,数据文件将被存储在应用沙箱目录的files里,确保数据的安全性和隔离性。

在HarmonyOS鸿蒙Next开发中,若要将数据文件存储在应用沙箱目录的files文件夹中,可以通过context.getFilesDir()方法获取应用沙箱的files目录路径,然后将数据文件存储在该路径下。示例代码如下:

File file = new File(context.getFilesDir(), "data.txt");
// 写入文件操作

这样,安装后文件会自动存储在沙箱目录的files文件夹中,确保数据安全且仅对应用自身可见。

回到顶部