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