1e41f4b71Sopenharmony_ci# @ohos.file.securityLabel (数据标签) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci该模块提供文件数据安全等级的相关功能:向应用程序提供查询、设置文件数据安全等级的JS接口。 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **说明:** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci## 导入模块 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci```ts 12e41f4b71Sopenharmony_ciimport { securityLabel } from '@kit.CoreFileKit'; 13e41f4b71Sopenharmony_ci``` 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci## 使用说明 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci使用该功能模块对文件/目录进行操作前,需要先获取其应用沙箱路径,获取方式及其接口用法请参考: 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ci ```ts 21e41f4b71Sopenharmony_ci import { UIAbility } from '@kit.AbilityKit'; 22e41f4b71Sopenharmony_ci import { window } from '@kit.ArkUI'; 23e41f4b71Sopenharmony_ci 24e41f4b71Sopenharmony_ci export default class EntryAbility extends UIAbility { 25e41f4b71Sopenharmony_ci onWindowStageCreate(windowStage: window.WindowStage) { 26e41f4b71Sopenharmony_ci let context = this.context; 27e41f4b71Sopenharmony_ci let pathDir = context.filesDir; 28e41f4b71Sopenharmony_ci } 29e41f4b71Sopenharmony_ci } 30e41f4b71Sopenharmony_ci ``` 31e41f4b71Sopenharmony_ci 32e41f4b71Sopenharmony_ci使用该功能模块对文件/目录进行操作前,需要先获取其应用沙箱路径,获取方式及其接口用法请参考:[应用上下文Context-获取应用文件路径](../../application-models/application-context-stage.md#获取应用文件路径) 33e41f4b71Sopenharmony_ci 34e41f4b71Sopenharmony_ci## DataLevel 35e41f4b71Sopenharmony_ci 36e41f4b71Sopenharmony_citype DataLevel = 's0' | 's1' | 's2' | 's3' | 's4' | 37e41f4b71Sopenharmony_ci 38e41f4b71Sopenharmony_ci数据安全级别。 39e41f4b71Sopenharmony_ci 40e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.File.FileIO 41e41f4b71Sopenharmony_ci 42e41f4b71Sopenharmony_ci## securityLabel.setSecurityLabel 43e41f4b71Sopenharmony_ci 44e41f4b71Sopenharmony_cisetSecurityLabel(path:string, type:DataLevel):Promise<void> 45e41f4b71Sopenharmony_ci 46e41f4b71Sopenharmony_ci以异步方法设置数据标签,数据标签安全等级仅可由低向高或平级设置,以Promise形式返回结果。 47e41f4b71Sopenharmony_ci 48e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.File.FileIO 49e41f4b71Sopenharmony_ci 50e41f4b71Sopenharmony_ci**参数:** 51e41f4b71Sopenharmony_ci 52e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 53e41f4b71Sopenharmony_ci| --------- | ------ | ---- | -------------------------------------------- | 54e41f4b71Sopenharmony_ci| path | string | 是 | 文件路径 | 55e41f4b71Sopenharmony_ci| type | [DataLevel](#datalevel) | 是 | 文件等级属性,只支持"s0","s1","s2","s3","s4" | 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci**返回值:** 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ci | 类型 | 说明 | 60e41f4b71Sopenharmony_ci | ------------------- | ---------------- | 61e41f4b71Sopenharmony_ci | Promise<void> | Promise实例,用于异步获取结果。本调用将返回空值。| 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ci**错误码:** 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[基础文件IO错误码](errorcode-filemanagement.md#基础文件io错误码)。 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 68e41f4b71Sopenharmony_ci| -------- | -------- | 69e41f4b71Sopenharmony_ci| 13900001 | Operation not permitted | 70e41f4b71Sopenharmony_ci| 13900007 | Arg list too long | 71e41f4b71Sopenharmony_ci| 13900015 | File exists | 72e41f4b71Sopenharmony_ci| 13900020 | Invalid argument | 73e41f4b71Sopenharmony_ci| 13900025 | No space left on device | 74e41f4b71Sopenharmony_ci| 13900037 | No data available | 75e41f4b71Sopenharmony_ci| 13900041 | Quota exceeded | 76e41f4b71Sopenharmony_ci| 13900042 | Unknown error | 77e41f4b71Sopenharmony_ci 78e41f4b71Sopenharmony_ci**示例:** 79e41f4b71Sopenharmony_ci 80e41f4b71Sopenharmony_ci ```ts 81e41f4b71Sopenharmony_ci import { BusinessError } from '@kit.BasicServicesKit'; 82e41f4b71Sopenharmony_ci let filePath = pathDir + '/test.txt'; 83e41f4b71Sopenharmony_ci securityLabel.setSecurityLabel(filePath, "s0").then(() => { 84e41f4b71Sopenharmony_ci console.info("setSecurityLabel successfully"); 85e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 86e41f4b71Sopenharmony_ci console.error("setSecurityLabel failed with error message: " + err.message + ", error code: " + err.code); 87e41f4b71Sopenharmony_ci }); 88e41f4b71Sopenharmony_ci ``` 89e41f4b71Sopenharmony_ci 90e41f4b71Sopenharmony_ci## securityLabel.setSecurityLabel 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_cisetSecurityLabel(path:string, type:DataLevel, callback: AsyncCallback<void>):void 93e41f4b71Sopenharmony_ci 94e41f4b71Sopenharmony_ci以异步方法设置数据标签,数据标签安全等级仅可由低向高或平级设置,以callback形式返回结果。 95e41f4b71Sopenharmony_ci 96e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.File.FileIO 97e41f4b71Sopenharmony_ci 98e41f4b71Sopenharmony_ci**参数:** 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 101e41f4b71Sopenharmony_ci| --------- | ------------------------- | ---- | -------------------------------------------- | 102e41f4b71Sopenharmony_ci| path | string | 是 | 文件路径 | 103e41f4b71Sopenharmony_ci| type | DataLevel | 是 | 文件等级属性,只支持"s0","s1","s2","s3","s4" | 104e41f4b71Sopenharmony_ci| callback | AsyncCallback<void> | 是 | 是否设置数据标签之后的回调 | 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ci**错误码:** 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[基础文件IO错误码](errorcode-filemanagement.md#基础文件io错误码)。 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 111e41f4b71Sopenharmony_ci| -------- | -------- | 112e41f4b71Sopenharmony_ci| 13900001 | Operation not permitted | 113e41f4b71Sopenharmony_ci| 13900007 | Arg list too long | 114e41f4b71Sopenharmony_ci| 13900015 | File exists | 115e41f4b71Sopenharmony_ci| 13900020 | Invalid argument | 116e41f4b71Sopenharmony_ci| 13900025 | No space left on device | 117e41f4b71Sopenharmony_ci| 13900037 | No data available | 118e41f4b71Sopenharmony_ci| 13900041 | Quota exceeded | 119e41f4b71Sopenharmony_ci| 13900042 | Unknown error | 120e41f4b71Sopenharmony_ci 121e41f4b71Sopenharmony_ci**示例:** 122e41f4b71Sopenharmony_ci 123e41f4b71Sopenharmony_ci ```ts 124e41f4b71Sopenharmony_ci import { BusinessError } from '@kit.BasicServicesKit'; 125e41f4b71Sopenharmony_ci let filePath = pathDir + '/test.txt'; 126e41f4b71Sopenharmony_ci securityLabel.setSecurityLabel(filePath, "s0", (err: BusinessError) => { 127e41f4b71Sopenharmony_ci if (err) { 128e41f4b71Sopenharmony_ci console.error("setSecurityLabel failed with error message: " + err.message + ", error code: " + err.code); 129e41f4b71Sopenharmony_ci } else { 130e41f4b71Sopenharmony_ci console.info("setSecurityLabel successfully."); 131e41f4b71Sopenharmony_ci } 132e41f4b71Sopenharmony_ci }); 133e41f4b71Sopenharmony_ci ``` 134e41f4b71Sopenharmony_ci 135e41f4b71Sopenharmony_ci## securityLabel.setSecurityLabelSync 136e41f4b71Sopenharmony_ci 137e41f4b71Sopenharmony_cisetSecurityLabelSync(path:string, type:DataLevel):void 138e41f4b71Sopenharmony_ci 139e41f4b71Sopenharmony_ci以同步方法设置数据标签,数据标签安全等级仅可由低向高或平级设置。 140e41f4b71Sopenharmony_ci 141e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.File.FileIO 142e41f4b71Sopenharmony_ci 143e41f4b71Sopenharmony_ci**参数:** 144e41f4b71Sopenharmony_ci 145e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 146e41f4b71Sopenharmony_ci| --------- | ------ | ---- | -------------------------------------------- | 147e41f4b71Sopenharmony_ci| path | string | 是 | 文件路径 | 148e41f4b71Sopenharmony_ci| type | DataLevel | 是 | 文件等级属性,只支持"s0","s1","s2","s3","s4" | 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ci**错误码:** 151e41f4b71Sopenharmony_ci 152e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[基础文件IO错误码](errorcode-filemanagement.md#基础文件io错误码)。 153e41f4b71Sopenharmony_ci 154e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 155e41f4b71Sopenharmony_ci| -------- | -------- | 156e41f4b71Sopenharmony_ci| 13900001 | Operation not permitted | 157e41f4b71Sopenharmony_ci| 13900007 | Arg list too long | 158e41f4b71Sopenharmony_ci| 13900015 | File exists | 159e41f4b71Sopenharmony_ci| 13900020 | Invalid argument | 160e41f4b71Sopenharmony_ci| 13900025 | No space left on device | 161e41f4b71Sopenharmony_ci| 13900037 | No data available | 162e41f4b71Sopenharmony_ci| 13900041 | Quota exceeded | 163e41f4b71Sopenharmony_ci| 13900042 | Unknown error | 164e41f4b71Sopenharmony_ci 165e41f4b71Sopenharmony_ci**示例:** 166e41f4b71Sopenharmony_ci 167e41f4b71Sopenharmony_ci```ts 168e41f4b71Sopenharmony_cilet filePath = pathDir + '/test.txt'; 169e41f4b71Sopenharmony_cisecurityLabel.setSecurityLabelSync(filePath, "s0"); 170e41f4b71Sopenharmony_ci``` 171e41f4b71Sopenharmony_ci 172e41f4b71Sopenharmony_ci## securityLabel.getSecurityLabel 173e41f4b71Sopenharmony_ci 174e41f4b71Sopenharmony_cigetSecurityLabel(path:string):Promise<string> 175e41f4b71Sopenharmony_ci 176e41f4b71Sopenharmony_ci异步方法获取数据标签,若未设置过数据标签安全等级则默认返回“s3”,以Promise形式返回结果。 177e41f4b71Sopenharmony_ci 178e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.File.FileIO 179e41f4b71Sopenharmony_ci 180e41f4b71Sopenharmony_ci**参数:** 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ci | 参数名 | 类型 | 必填 | 说明 | 183e41f4b71Sopenharmony_ci | ------ | ------ | ---- | -------- | 184e41f4b71Sopenharmony_ci | path | string | 是 | 文件路径 | 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ci**返回值:** 187e41f4b71Sopenharmony_ci 188e41f4b71Sopenharmony_ci | 类型 | 说明 | 189e41f4b71Sopenharmony_ci | --------------------- | ------------ | 190e41f4b71Sopenharmony_ci | Promise<string> | 返回数据标签 | 191e41f4b71Sopenharmony_ci 192e41f4b71Sopenharmony_ci**错误码:** 193e41f4b71Sopenharmony_ci 194e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[基础文件IO错误码](errorcode-filemanagement.md#基础文件io错误码)。 195e41f4b71Sopenharmony_ci 196e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 197e41f4b71Sopenharmony_ci| -------- | -------- | 198e41f4b71Sopenharmony_ci| 13900001 | Operation not permitted | 199e41f4b71Sopenharmony_ci| 13900007 | Arg list too long | 200e41f4b71Sopenharmony_ci| 13900015 | File exists | 201e41f4b71Sopenharmony_ci| 13900020 | Invalid argument | 202e41f4b71Sopenharmony_ci| 13900025 | No space left on device | 203e41f4b71Sopenharmony_ci| 13900037 | No data available | 204e41f4b71Sopenharmony_ci| 13900041 | Quota exceeded | 205e41f4b71Sopenharmony_ci| 13900042 | Unknown error | 206e41f4b71Sopenharmony_ci 207e41f4b71Sopenharmony_ci**示例:** 208e41f4b71Sopenharmony_ci 209e41f4b71Sopenharmony_ci ```ts 210e41f4b71Sopenharmony_ci import { BusinessError } from '@kit.BasicServicesKit'; 211e41f4b71Sopenharmony_ci let filePath = pathDir + '/test.txt'; 212e41f4b71Sopenharmony_ci securityLabel.getSecurityLabel(filePath).then((type: string) => { 213e41f4b71Sopenharmony_ci console.log("getSecurityLabel successfully, Label: " + type); 214e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 215e41f4b71Sopenharmony_ci console.error("getSecurityLabel failed with error message: " + err.message + ", error code: " + err.code); 216e41f4b71Sopenharmony_ci }); 217e41f4b71Sopenharmony_ci ``` 218e41f4b71Sopenharmony_ci 219e41f4b71Sopenharmony_ci## securityLabel.getSecurityLabel 220e41f4b71Sopenharmony_ci 221e41f4b71Sopenharmony_cigetSecurityLabel(path:string, callback:AsyncCallback<string>): void 222e41f4b71Sopenharmony_ci 223e41f4b71Sopenharmony_ci异步方法获取数据标签,若未设置过数据标签安全等级则默认返回“s3”,以callback形式返回结果。 224e41f4b71Sopenharmony_ci 225e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.File.FileIO 226e41f4b71Sopenharmony_ci 227e41f4b71Sopenharmony_ci**参数:** 228e41f4b71Sopenharmony_ci 229e41f4b71Sopenharmony_ci | 参数名 | 类型 | 必填 | 说明 | 230e41f4b71Sopenharmony_ci | -------- | --------------------------- | ---- | -------------------------- | 231e41f4b71Sopenharmony_ci | path | string | 是 | 文件路径 | 232e41f4b71Sopenharmony_ci | callback | AsyncCallback<string> | 是 | 异步获取数据标签之后的回调 | 233e41f4b71Sopenharmony_ci 234e41f4b71Sopenharmony_ci**错误码:** 235e41f4b71Sopenharmony_ci 236e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[基础文件IO错误码](errorcode-filemanagement.md#基础文件io错误码)。 237e41f4b71Sopenharmony_ci 238e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 239e41f4b71Sopenharmony_ci| -------- | -------- | 240e41f4b71Sopenharmony_ci| 13900001 | Operation not permitted | 241e41f4b71Sopenharmony_ci| 13900007 | Arg list too long | 242e41f4b71Sopenharmony_ci| 13900015 | File exists | 243e41f4b71Sopenharmony_ci| 13900020 | Invalid argument | 244e41f4b71Sopenharmony_ci| 13900025 | No space left on device | 245e41f4b71Sopenharmony_ci| 13900037 | No data available | 246e41f4b71Sopenharmony_ci| 13900041 | Quota exceeded | 247e41f4b71Sopenharmony_ci| 13900042 | Unknown error | 248e41f4b71Sopenharmony_ci 249e41f4b71Sopenharmony_ci**示例:** 250e41f4b71Sopenharmony_ci 251e41f4b71Sopenharmony_ci ```ts 252e41f4b71Sopenharmony_ci import { BusinessError } from '@kit.BasicServicesKit'; 253e41f4b71Sopenharmony_ci let filePath = pathDir + '/test.txt'; 254e41f4b71Sopenharmony_ci securityLabel.getSecurityLabel(filePath, (err: BusinessError, type: string) => { 255e41f4b71Sopenharmony_ci if (err) { 256e41f4b71Sopenharmony_ci console.error("getSecurityLabel failed with error message: " + err.message + ", error code: " + err.code); 257e41f4b71Sopenharmony_ci } else { 258e41f4b71Sopenharmony_ci console.log("getSecurityLabel successfully, Label: " + type); 259e41f4b71Sopenharmony_ci } 260e41f4b71Sopenharmony_ci }); 261e41f4b71Sopenharmony_ci ``` 262e41f4b71Sopenharmony_ci 263e41f4b71Sopenharmony_ci## securityLabel.getSecurityLabelSync 264e41f4b71Sopenharmony_ci 265e41f4b71Sopenharmony_cigetSecurityLabelSync(path:string):string 266e41f4b71Sopenharmony_ci 267e41f4b71Sopenharmony_ci以同步方法获取数据标签,若未设置过数据标签安全等级则默认返回“s3”。 268e41f4b71Sopenharmony_ci 269e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.File.FileIO 270e41f4b71Sopenharmony_ci 271e41f4b71Sopenharmony_ci**参数:** 272e41f4b71Sopenharmony_ci 273e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 274e41f4b71Sopenharmony_ci| ------ | ------ | ---- | -------- | 275e41f4b71Sopenharmony_ci| path | string | 是 | 文件路径 | 276e41f4b71Sopenharmony_ci 277e41f4b71Sopenharmony_ci**返回值:** 278e41f4b71Sopenharmony_ci 279e41f4b71Sopenharmony_ci| 类型 | 说明 | 280e41f4b71Sopenharmony_ci| ------ | ------------ | 281e41f4b71Sopenharmony_ci| string | 返回数据标签 | 282e41f4b71Sopenharmony_ci 283e41f4b71Sopenharmony_ci**错误码:** 284e41f4b71Sopenharmony_ci 285e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[基础文件IO错误码](errorcode-filemanagement.md#基础文件io错误码)。 286e41f4b71Sopenharmony_ci 287e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 288e41f4b71Sopenharmony_ci| -------- | -------- | 289e41f4b71Sopenharmony_ci| 13900001 | Operation not permitted | 290e41f4b71Sopenharmony_ci| 13900007 | Arg list too long | 291e41f4b71Sopenharmony_ci| 13900015 | File exists | 292e41f4b71Sopenharmony_ci| 13900020 | Invalid argument | 293e41f4b71Sopenharmony_ci| 13900025 | No space left on device | 294e41f4b71Sopenharmony_ci| 13900037 | No data available | 295e41f4b71Sopenharmony_ci| 13900041 | Quota exceeded | 296e41f4b71Sopenharmony_ci| 13900042 | Unknown error | 297e41f4b71Sopenharmony_ci 298e41f4b71Sopenharmony_ci**示例:** 299e41f4b71Sopenharmony_ci 300e41f4b71Sopenharmony_ci```ts 301e41f4b71Sopenharmony_cilet filePath = pathDir + '/test.txt'; 302e41f4b71Sopenharmony_cilet type = securityLabel.getSecurityLabelSync(filePath); 303e41f4b71Sopenharmony_ciconsole.log("getSecurityLabel successfully, Label: " + type); 304e41f4b71Sopenharmony_ci``` 305