1# @ohos.file.volumeManager (卷管理) 2 3该模块提供卷设备、磁盘设备查询和管理的相关功能:包括查询卷设备信息,对卷设备的挂载卸载、对磁盘设备分区以及卷设备的格式化等功能。 4 5> **说明:** 6> 7> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> - 本模块接口为系统接口。 9> - 本模块支持对错误码进行处理,错误码及其适配方式[参考文档](../errorcodes/errorcode-filemanagement.md#错误码适配指导)。 10 11## 导入模块 12 13```js 14import volumemanager from "@ohos.file.volumeManager"; 15``` 16 17## volumemanager.getAllVolumes 18 19getAllVolumes(): Promise<Array<Volume>> 20 21异步获取当前外置存储中所有卷设备信息,以promise方式返回。 22 23**需要权限**:ohos.permission.STORAGE_MANAGER 24 25**系统能力**:SystemCapability.FileManagement.StorageService.Volume 26 27**返回值:** 28 29 | 类型 | 说明 | 30 | ---------------------------------- | -------------------------- | 31 | Promise<[Volume](#volume)[]> | 返回当前所有可获得的卷设备信息 | 32 33**示例:** 34 35 ```js 36 volumemanager.getAllVolumes().then(function(volumes){ 37 // do something 38 }).catch(function(error){ 39 console.info("getAllVolumes failed"); 40 }); 41 ``` 42 43## volumemanager.getAllVolumes 44 45getAllVolumes(callback: AsyncCallback<Array<Volume>>): void 46 47异步获取当前外置存储中所有卷设备信息,以callback方式返回。 48 49**需要权限**:ohos.permission.STORAGE_MANAGER 50 51**系统能力**:SystemCapability.FileManagement.StorageService.Volume 52 53**参数:** 54 55 | 参数名 | 类型 | 必填 | 说明 | 56 | -------- | ------------------------------------------------- | ---- | ------------------------------------ | 57 | callback | AsyncCallback<[Volume](#volume)[]> | 是 | 获取当前所有可获得的卷设备信息之后的回调 | 58 59**示例:** 60 61 ```js 62 let uuid = ""; 63 volumemanager.getAllVolumes(function(error, volumes){ 64 // do something 65 }); 66 ``` 67 68 69## volumemanager.mount 70 71mount(volumeId: string): Promise<void> 72 73异步挂载指定卷设备,以promise方式返回。当前仅支持fat、exfat以及ntfs三中文件系统的卷设备挂载。 74 75**需要权限**:ohos.permission.MOUNT_UNMOUNT_MANAGER 76 77**系统能力**:SystemCapability.FileManagement.StorageService.Volume 78 79**参数:** 80 81 | 参数名 | 类型 | 必填 | 说明 | 82 | -------- | ------ | ---- | ---- | 83 | volumeId | string | 是 | 卷设备id | 84 85**返回值:** 86 87 | 类型 | 说明 | 88 | ---------------------- | ---------- | 89 | Promise<void> | 挂载指定卷设备 | 90 91**示例:** 92 93 ```js 94 let volumeId = ""; 95 volumemanager.mount(volumeId).then(function(){ 96 // do something 97 }).catch(function(error){ 98 console.info("mount failed"); 99 }); 100 ``` 101 102## volumemanager.mount 103 104mount(volumeId: string, callback:AsyncCallback<void>):void 105 106异步挂载指定卷设备,以callback方式返回。当前仅支持fat、exfat以及ntfs三中文件系统的卷设备挂载。 107 108**需要权限**:ohos.permission.MOUNT_UNMOUNT_MANAGER 109 110**系统能力**:SystemCapability.FileManagement.StorageService.Volume 111 112**参数:** 113 114 | 参数名 | 类型 | 必填 | 说明 | 115 | -------- | ------------------------------------- | ---- | -------------------- | 116 | volumeId | string | 是 | 卷设备id | 117 | callback | AsyncCallback<void> | 是 | 挂载指定卷设备之后的回调 | 118 119**示例:** 120 121 ```js 122 let volumeId = ""; 123 volumemanager.mount(volumeId, function(error){ 124 // do something 125 }); 126 ``` 127 128## volumemanager.unmount 129 130unmount(volumeId: string): Promise<void> 131 132异步卸载指定卷设备,以promise方式返回。 133 134**需要权限**:ohos.permission.MOUNT_UNMOUNT_MANAGER 135 136**系统能力**:SystemCapability.FileManagement.StorageService.Volume 137 138**参数:** 139 140 | 参数名 | 类型 | 必填 | 说明 | 141 | -------- | ------ | ---- | ---- | 142 | volumeId | string | 是 | 卷设备id | 143 144**返回值:** 145 146 | 类型 | 说明 | 147 | ---------------------- | ---------- | 148 | Promise<void> | 卸载指定卷设备 | 149 150**示例:** 151 152 ```js 153 let volumeId = ""; 154 volumemanager.unmount(volumeId).then(function(){ 155 // do something 156 }).catch(function(error){ 157 console.info("mount failed"); 158 }); 159 ``` 160 161## volumemanager.unmount 162 163unmount(volumeId: string, callback: AsyncCallback<void>): void 164 165异步卸载指定卷设备,以callback方式返回。 166 167**需要权限**:ohos.permission.MOUNT_UNMOUNT_MANAGER 168 169**系统能力**:SystemCapability.FileManagement.StorageService.Volume 170 171**参数:** 172 173 | 参数名 | 类型 | 必填 | 说明 | 174 | -------- | ------------------------------------- | ---- | -------------------- | 175 | volumeId | string | 是 | 卷设备id | 176 | callback | AsyncCallback<void> | 是 | 卸载指定卷设备之后的回调 | 177 178**示例:** 179 180 ```js 181 let volumeId = ""; 182 volumemanager.unmount(volumeId, function(error){ 183 // do something 184 }); 185 ``` 186 187## volumemanager.getVolumeByUuid 188 189getVolumeByUuid(uuid: string): Promise<Volume> 190 191异步通过卷设备uuid获得指定卷设备信息,以promise方式返回。 192 193**需要权限**:ohos.permission.STORAGE_MANAGER 194 195**系统能力**:SystemCapability.FileManagement.StorageService.Volume 196 197**参数:** 198 199 | 参数名 | 类型 | 必填 | 说明 | 200 | -------- | ------ | ---- | ---- | 201 | uuid | string | 是 | 卷设备uuid | 202 203**返回值:** 204 205 | 类型 | 说明 | 206 | ---------------------------------- | -------------------------- | 207 | Promise<[Volume](#volume)> | 返回当前所有可获得的卷设备信息 | 208 209**示例:** 210 211 ```js 212 let uuid = ""; 213 volumemanager.getVolumeByUuid(uuid).then(function(volume) { 214 console.info("getVolumeByUuid successfully:" + JSON.stringify(volume)); 215 }).catch(function(error){ 216 console.info("getVolumeByUuid failed with error:"+ error); 217 }); 218 ``` 219 220## volumemanager.getVolumeByUuid 221 222getVolumeByUuid(uuid: string, callback: AsyncCallback<Volume>): void 223 224异步通过卷设备uuid获得指定卷设备信息,以callback方式返回。 225 226**需要权限**:ohos.permission.STORAGE_MANAGER 227 228**系统能力**:SystemCapability.FileManagement.StorageService.Volume 229 230**参数:** 231 232 | 参数名 | 类型 | 必填 | 说明 | 233 | -------- | ------------------------------------------------ | ---- | -------------------- | 234 | uuid | string | 是 | 卷设备uuid | 235 | callback | AsyncCallback<[Volume](#volume)> | 是 | 获取卷设备信息之后的回调 | 236 237**示例:** 238 239 ```js 240 let uuid = ""; 241 volumemanager.getVolumeByUuid(uuid, (error, volume) => { 242 // do something 243 }); 244 ``` 245 246## volumemanager.getVolumeById 247 248getVolumeById(volumeId: string): Promise<Volume> 249 250异步通过卷设备id获得指定卷设备信息,以promise方式返回。 251 252**需要权限**:ohos.permission.STORAGE_MANAGER 253 254**系统能力**:SystemCapability.FileManagement.StorageService.Volume 255 256**参数:** 257 258 | 参数名 | 类型 | 必填 | 说明 | 259 | -------- | ------ | ---- | ---- | 260 | volumeId | string | 是 | 卷设备id | 261 262**返回值:** 263 264 | 类型 | 说明 | 265 | ---------------------------------- | -------------------------- | 266 | Promise<[Volume](#volume)> | 返回当前所有可获得的卷设备信息 | 267 268**示例:** 269 270 ```js 271 let volumeId = ""; 272 volumemanager.getVolumeById(volumeId).then(function(volume) { 273 console.info("getVolumeById successfully:" + JSON.stringify(volume)); 274 }).catch(function(error){ 275 console.info("getVolumeById failed with error:"+ error); 276 }); 277 ``` 278 279## volumemanager.getVolumeById 280 281getVolumeById(volumeId: string, callback: AsyncCallback<Volume>): void 282 283异步通过指定卷设备id获得卷设备信息,以callback方式返回。 284 285**需要权限**:ohos.permission.STORAGE_MANAGER 286 287**系统能力**:SystemCapability.FileManagement.StorageService.Volume 288 289**参数:** 290 291 | 参数名 | 类型 | 必填 | 说明 | 292 | -------- | ------------------------- | ---- | ----------------------------- | 293 | volumeId | string | 是 | 卷设备id | 294 | callback | AsyncCallback<[Volume](#volume)> | 是 | 获取卷设备信息之后的回调 | 295 296**示例:** 297 298 ```js 299 let volumeId = ""; 300 volumemanager.getVolumeById(volumeId, (error, volume) => { 301 // do something 302 }); 303 ``` 304 305## volumemanager.setVolumeDescription 306 307setVolumeDescription(uuid: string, description: string): Promise<void> 308 309异步修改指定卷设备描述,以promise方式返回。 310 311**需要权限**:ohos.permission.MOUNT_UNMOUNT_MANAGER 312 313**系统能力**:SystemCapability.FileManagement.StorageService.Volume 314 315**参数:** 316 317 | 参数名 | 类型 | 必填 | 说明 | 318 | --------- | ------ | ---- | ---- | 319 | uuid | string | 是 | 卷设备uuid | 320 | description | string | 是 | 卷设备描述 | 321 322**返回值:** 323 324 | 类型 | 说明 | 325 | ---------------------- | -------------------------- | 326 | Promise<void> | 设置卷设备信息 | 327 328**示例:** 329 330 ```js 331 let uuid = ""; 332 let description = ""; 333 volumemanager.setVolumeDescription(uuid, description).then(function() { 334 console.info("setVolumeDescription successfully"); 335 }).catch(function(error){ 336 console.info("setVolumeDescription failed with error:"+ error); 337 }); 338 ``` 339 340## volumemanager.setVolumeDescription 341 342setVolumeDescription(uuid: string, description: string, callback: AsyncCallback<void>): void 343 344异步修改指定卷设备描述,以callback方式返回。 345 346**需要权限**:ohos.permission.MOUNT_UNMOUNT_MANAGER 347 348**系统能力**:SystemCapability.FileManagement.StorageService.Volume 349 350**参数:** 351 352 | 参数名 | 类型 | 必填 | 说明 | 353 | ---------- | --------------------------------------- | ---- | ---------------- | 354 | uuid | string | 是 | 卷设备uuid | 355 | description | string | 是 | 卷设备描述 | 356 | callback | AsyncCallback<void> | 是 | 设置卷描述之后的回调 | 357 358**示例:** 359 360 ```js 361 let uuid = ""; 362 let description = ""; 363 volumemanager.setVolumeDescription(uuid, description, (error) => { 364 // do something 365 }); 366 ``` 367 368## volumemanager.format 369 370format(volumeId: string, fsType: string): Promise<void> 371 372异步对指定卷设备进行格式化,以promise方式返回。当前仅支持vfat和exfat两种文件系统类型的格式化,只有处于卸载状态的卷设备可以进行格式化,格式化后卷设备的uuid、挂载路径和卷设备描述均会发生变化。 373 374**需要权限**:ohos.permission.MOUNT_FORMAT_MANAGER 375 376**系统能力**:SystemCapability.FileManagement.StorageService.Volume 377 378**参数:** 379 380 | 参数名 | 类型 | 必填 | 说明 | 381 | ----------- | ------ | ---- | ---- | 382 | volumeId | string | 是 | 卷设备id | 383 | fsType | string | 是 | 文件系统类型(vfat或者exfat) | 384 385**返回值:** 386 387 | 类型 | 说明 | 388 | ---------------------- | ---------- | 389 | Promise<void> | 对指定卷设备进行格式化 | 390 391**示例:** 392 393 ```js 394 let volumeId = ""; 395 let fsType = ""; 396 volumemanager.format(volumeId, fsType).then(function() { 397 console.info("format successfully"); 398 }).catch(function(error){ 399 console.info("format failed with error:"+ error); 400 }); 401 ``` 402 403## volumemanager.format 404 405format(volumeId: string, fsType: string, callback: AsyncCallback<void>): void 406 407异步对指定卷设备进行格式化,以callback方式返回。当前仅支持vfat和exfat两种文件系统类型的格式化,只有处于卸载状态的卷设备可以进行格式化,格式化后卷设备的uuid、挂载路径和卷设备描述均会发生变化。 408 409**需要权限**:ohos.permission.MOUNT_FORMAT_MANAGER 410 411**系统能力**:SystemCapability.FileManagement.StorageService.Volume 412 413**参数:** 414 415 | 参数名 | 类型 | 必填 | 说明 | 416 | -------- | ------------------------- | ---- | ----------------------------- | 417 | volumeId | string | 是 | 卷设备id | 418 | fsType | string | 是 | 文件系统类型(vfat或者exfat) | 419 | callback | AsyncCallback<void> | 是 | 对指定卷设备格式化后的回调 | 420 421**示例:** 422 423 ```js 424 let volumeId = ""; 425 let fsType = ""; 426 volumemanager.format(volumeId, fsType, (error) => { 427 // do something 428 }); 429 ``` 430 431## volumemanager.partition 432 433partition(diskId: string, type: number): Promise<void> 434 435异步对磁盘设备进行分区,以promise方式返回。当前仅支持将磁盘设备重新分区为一个分区,系统是支持读取多分区的磁盘设备。 436 437**需要权限**:ohos.permission.MOUNT_FORMAT_MANAGER 438 439**系统能力**:SystemCapability.FileManagement.StorageService.Volume 440 441**参数:** 442 443 | 参数名 | 类型 | 必填 | 说明 | 444 | ----------- | ------ | ---- | ---- | 445 | diskId | string | 是 | 卷设备所属的磁盘设备id | 446 | type | number | 是 | 分区类型 | 447 448**返回值:** 449 450 | 类型 | 说明 | 451 | --------------------- | ----------------------- | 452 | Promise<void> | 对磁盘进行分区 | 453 454**示例:** 455 456 ```js 457 let diskId = ""; 458 let type = 0; 459 volumemanager.partition(diskId, type).then(function() { 460 console.info("partition successfully"); 461 }).catch(function(error){ 462 console.info("partition failed with error:"+ error); 463 }); 464 ``` 465 466## volumemanager.partition 467 468partition(diskId: string, type: number, callback: AsyncCallback<void>): void 469 470异步对磁盘进行分区,以callback方式返回。当前仅支持将磁盘设备重新分区为一个分区,系统是支持读取多分区的磁盘设备。 471 472**需要权限**:ohos.permission.MOUNT_FORMAT_MANAGER 473 474**系统能力**:SystemCapability.FileManagement.StorageService.Volume 475 476**参数:** 477 478 | 参数名 | 类型 | 必填 | 说明 | 479 | -------- | --------------------------------------- | ---- | ---------------- | 480 | diskId | string | 是 | 卷设备所属的磁盘id | 481 | type | number | 是 | 分区类型 | 482 | callback | AsyncCallback<void> | 是 | 对磁盘设备进行分区 | 483 484**示例:** 485 486 ```js 487 let diskId = ""; 488 let type = 0; 489 volumemanager.partition(diskId, type, (error) => { 490 // do something 491 }); 492 ``` 493 494## Volume 495 496**系统能力**:以下各项对应的系统能力均为SystemCapability.FileManagement.StorageService.Volume。 497 498### 属性 499 500| 名称 | 类型 | 可读 | 可写 | 说明 | 501| ----------- | ------- | ------- | ----- | -------------------- | 502| id | string | 是 | 否 | 卷设备ID的格式为vol-{主设备号}-{次设备号},主设备号用来区分不同种类的设备,次设备号用来区分同一类型的多个设备,卷设备ID会随着插卡顺序不同而变化。 | 503| uuid | string | 是 | 否 | 卷设备uuid是卷设备的通用唯一识别码,不会随着插卡顺序变化而变化,但是卷设备的格式化会改变卷设备的uuid | 504| diskId | string | 是 | 否 | 卷设备所属的磁盘ID,一个磁盘可以有一个或者多个卷设备。磁盘设备ID好格式为disk-{主设备号}-{次设备号},与卷设备ID相似。 | 505| description | string | 是 | 否 | 卷设备描述、 | 506| removable | boolean | 是 | 否 | 表示卷设备是否可移除,当前仅支持可移除存储设备、 | 507| state | number | 是 | 否 | 卷设备状态标识:<br>0:卸载状态 UNMOUNTED<br> 1:检查状态 CHECKING<br> 2:挂载状态 MOUNTED<br> 3:正在弹出状态 EJECTING | 508| path | string | 是 | 否 | 卷设备的挂载地址,一般为/mnt/external/{uuid} |