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
文档中提到了 rawfile
和 resfile
这两个文件夹
rawfile
的路径不清楚,只提供了resourceManager
的访问接口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
哦,把问题解决了,目前的方法是把数据放在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
路径。具体步骤如下:
-
获取
files
目录路径:通过context.getFilesDir()
方法获取应用沙箱目录下的files
路径。该路径为应用私有目录,其他应用无法访问。 -
创建或写入文件:使用
File
类或相关I/O操作在获取的files
目录路径下创建或写入文件。例如:const filePath = context.getFilesDir() + '/myfile.txt'; const file = new File(filePath, 'w'); file.write('Hello, HarmonyOS'); file.close();
-
读取文件:同样可以通过
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
文件夹中,确保数据安全且仅对应用自身可见。