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