IT评测·应用市场-qidao123.com

标题: 鸿蒙next-获取应用文件路径 [打印本页]

作者: 河曲智叟    时间: 2025-2-13 17:14
标题: 鸿蒙next-获取应用文件路径
首先,我们知道鸿蒙next系统上不像android一样提供全部的文件管理器,而是应用沙箱进行了隔离操纵,那么如何才能获取到应用的文件路径呢​。
我们要明确应用沙箱是什么​?

应用沙箱是一种以安全防护为目的的隔离机制,避免数据受到恶意路径穿越访问。在这种沙箱的保护机制下,应用可见的目录范围即为“应用沙箱目录”。

所以鸿蒙next提供了一种获取方法:

基类Context提供了获取应用文件路径的能力,ApplicationContext、AbilityStageContext、UIAbilityContext和ExtensionContext均继承该能力。应用文件路径属于应用沙箱路径。
通过ApplicationContext获取应用级别的应用文件路径,此路径是应用全局信息保举的存放路径,这些文件会跟随应用的卸载而删除。
属性路径bundleCodeDir<路径前缀>/el1/bundlecacheDir<路径前缀>/<加密等级>/base/cachefilesDir<路径前缀>/<加密等级>/base/filespreferencesDir<路径前缀>/<加密等级>/base/preferencestempDir<路径前缀>/<加密等级>/base/tempdatabaseDir<路径前缀>/<加密等级>/databasedistributedFilesDir<路径前缀>/el2/distributedFilescloudFileDir12+<路径前缀>/el2/cloud  
  1. import { common } from '@kit.AbilityKit';
  2. import { hilog } from '@kit.PerformanceAnalysisKit';
  3. import { promptAction } from '@kit.ArkUI';
  4. const TAG: string = '[Page_Context]';
  5. const DOMAIN_NUMBER: number = 0xFF00;
  6. @Entry
  7. @Component
  8. struct Page_Context {
  9.   private context = getContext(this) as common.UIAbilityContext;
  10.   build() {
  11.     Column() {
  12.       //...
  13.       List({ initialIndex: 0 }) {
  14.         ListItem() {
  15.           Row() {
  16.             //...
  17.           }
  18.           .onClick(() => {
  19.             let applicationContext = this.context.getApplicationContext();
  20.             let cacheDir = applicationContext.cacheDir;
  21.             let tempDir = applicationContext.tempDir;
  22.             let filesDir = applicationContext.filesDir;
  23.             let databaseDir = applicationContext.databaseDir;
  24.             let bundleCodeDir = applicationContext.bundleCodeDir;
  25.             let distributedFilesDir = applicationContext.distributedFilesDir;
  26.             let preferencesDir = applicationContext.preferencesDir;
  27.             let cloudFileDir = applicationContext.cloudFileDir;
  28.             // 获取应用文件路径
  29.             let filePath = tempDir + 'test.txt';
  30.             hilog.info(DOMAIN_NUMBER, TAG, `filePath: ${filePath}`);
  31.             if (filePath !== null) {
  32.               promptAction.showToast({
  33.                 message: filePath
  34.               });
  35.             }
  36.           })
  37.         }
  38.         //...
  39.       }
  40.       //...
  41.     }
  42.     //...
  43.   }
  44. }
复制代码
通过AbilityStageContext、UIAbilityContext、ExtensionContext获取HAP级别的应用文件路径。此路径是HAP相干信息保举的存放路径,这些文件会跟随HAP的卸载而删除,但不会影响应用级别路径的文件,除非该应用的HAP已全部卸载。
  1. import { common } from '@kit.AbilityKit';
  2. import { hilog } from '@kit.PerformanceAnalysisKit';
  3. import { promptAction } from '@kit.ArkUI';
  4. const TAG: string = '[Page_Context]';
  5. const DOMAIN_NUMBER: number = 0xFF00;
  6. @Entry
  7. @Component
  8. struct Page_Context {
  9.   private context = getContext(this) as common.UIAbilityContext;
  10.   build() {
  11.     Column() {
  12.       //...
  13.       List({ initialIndex: 0 }) {
  14.         ListItem() {
  15.           Row() {
  16.             //...
  17.           }
  18.           .onClick(() => {
  19.             let cacheDir = this.context.cacheDir;
  20.             let tempDir = this.context.tempDir;
  21.             let filesDir = this.context.filesDir;
  22.             let databaseDir = this.context.databaseDir;
  23.             let bundleCodeDir = this.context.bundleCodeDir;
  24.             let distributedFilesDir = this.context.distributedFilesDir;
  25.             let preferencesDir = this.context.preferencesDir;
  26.             let cloudFileDir = applicationContext.cloudFileDir;
  27.             // 获取应用文件路径
  28.             let filePath = tempDir + 'test.txt';
  29.             hilog.info(DOMAIN_NUMBER, TAG, `filePath: ${filePath}`);
  30.             if (filePath !== null) {
  31.               promptAction.showToast({
  32.                 message: filePath
  33.               });
  34.             }
  35.           })
  36.         }
  37.         //...
  38.       }
  39.       //...
  40.     }
  41.     //...
  42.   }
  43. }
复制代码
属性路径bundleCodeDir<路径前缀>/el1/bundlecacheDir<路径前缀>/<加密等级>/base/haps/<module-name>/cachefilesDir<路径前缀>/<加密等级>/base/haps/<module-name>/filespreferencesDir<路径前缀>/<加密等级>/base/haps/<module-name>/preferencestempDir<路径前缀>/<加密等级>/base/haps/<module-name>/tempdatabaseDir<路径前缀>/<加密等级>/database/<module-name>distributedFilesDir<路径前缀>/el2/distributedFiles/<module-name>cloudFileDir12+<路径前缀>/el2/cloud/<module-name>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4