# @ohos.file.cloudSync (端云同步能力)
该模块向应用提供端云同步能力,包括启动/停止端云同步以及启动/停止原图下载功能。
> **说明:**
>
> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```ts
import { cloudSync } from '@kit.CoreFileKit';
```
## State11+
云文件下载状态,为枚举类型。
**系统能力**: SystemCapability.FileManagement.DistributedFileService.CloudSync.Core
| 名称 | 值| 说明 |
| ----- | ---- | ---- |
| RUNNING | 0 | 云文件正在下载中 |
| COMPLETED | 1 | 云文件下载完成 |
| FAILED | 2 | 云文件下载失败 |
| STOPPED | 3 | 云文件下载已停止 |
## DownloadProgress11+
云文件下载过程。
**系统能力**: SystemCapability.FileManagement.DistributedFileService.CloudSync.Core
| 名称 | 类型 | 必填 | 说明 |
| ---------- | ------ | ---- | ---- |
| state | [State](#state11) | 是 | 枚举值,云文件下载状态|
| processed | number | 是 | 已下载数据大小|
| size | number | 是 | 当前云文件大小|
| uri | string | 是 | 当前云文件uri|
| error | [DownloadErrorType](#downloaderrortype11) | 是 | 下载的错误类型|
## CloudFileCache11+
云盘文件缓存对象,用来支撑文件管理应用原文件下载流程。
**系统能力**:SystemCapability.FileManagement.DistributedFileService.CloudSync.Core
### construct11+
constructor()
云盘文件缓存流程的构造函数,用于获取CloudFileCache类的实例。
**系统能力**:SystemCapability.FileManagement.DistributedFileService.CloudSync.Core
**错误码:**
| 错误码ID | 错误信息 |
| ---------------------------- | ---------- |
| 401 | The input parameter is invalid. Possible causes:Incorrect parameter types. |
**示例:**
```ts
let fileCache = new cloudSync.CloudFileCache();
```
### on11+
on(event: 'progress', callback: Callback\): void
添加云盘文件缓存过程事件监听。
**系统能力**:SystemCapability.FileManagement.DistributedFileService.CloudSync.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------ | ---- | ---- |
| event | string | 是 | 订阅的事件类型,取值为'progress'(下载过程事件)|
| callback | Callback\<[DownloadProgress](#downloadprogress11)> | 是 | 云文件下载过程事件回调。 |
**错误码:**
以下错误码的详细介绍请参见[文件管理子系统错误码](errorcode-filemanagement.md)。
| 错误码ID | 错误信息 |
| ---------------------------- | ---------- |
| 401 | The input parameter is invalid. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 13600001 | IPC error. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
let fileCache = new cloudSync.CloudFileCache();
let callback = (pg: cloudSync.DownloadProgress) => {
console.info("download state:" + pg.state);
};
try {
fileCache.on('progress', callback);
} catch (e) {
const error = e as BusinessError;
console.error(`Error code: ${error.code}, message: ${error.message}`);
}
```
### off11+
off(event: 'progress', callback?: Callback\): void
移除云盘文件缓存过程事件监听。
**系统能力**:SystemCapability.FileManagement.DistributedFileService.CloudSync.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------ | ---- | ---- |
| event | string | 是 | 取消订阅的事件类型,取值为'progress'(同步过程事件)|
| callback | Callback\<[DownloadProgress](#downloadprogress11)> | 否 | 云文件下载过程事件回调,若填写,将视为取消指定的回调函数,否则为取消当前订阅的所有回调函数。 |
**错误码:**
以下错误码的详细介绍请参见[文件管理子系统错误码](errorcode-filemanagement.md)。
| 错误码ID | 错误信息 |
| ---------------------------- | ---------- |
| 401 | The input parameter is invalid. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 13600001 | IPC error. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
let fileCache = new cloudSync.CloudFileCache();
let callback = (pg: cloudSync.DownloadProgress) => {
console.info("download state:" + pg.state);
}
try {
fileCache.on('progress', callback);
fileCache.off('progress', callback);
} catch (e) {
const error = e as BusinessError;
console.error(`Error code: ${error.code}, message: ${error.message}`);
}
```
### start11+
start(uri: string): Promise<void>
异步方法启动云盘文件缓存, 以Promise形式返回结果。
**系统能力**:SystemCapability.FileManagement.DistributedFileService.CloudSync.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------ | ---- | ---- |
| uri | string | 是 | 待下载文件uri。 |
**返回值:**
| 类型 | 说明 |
| --------------------- | ---------------- |
| Promise<void> | 使用Promise形式返回启动云文件下载的结果。 |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
import { fileUri } from '@kit.CoreFileKit';
let fileCache = new cloudSync.CloudFileCache();
let path = "/data/storage/el2/cloud/1.txt";
let uri = fileUri.getUriFromPath(path);
try {
fileCache.on('progress', (pg: cloudSync.DownloadProgress) => {
console.info("download state:" + pg.state);
});
} catch (e) {
const error = e as BusinessError;
console.error(`Error code: ${error.code}, message: ${error.message}`);
}
fileCache.start(uri).then(() => {
console.info("start download successfully");
}).catch((err: BusinessError) => {
console.error("start download failed with error message: " + err.message + ", error code: " + err.code);
});
```
**错误码:**
以下错误码的详细介绍请参见[文件管理子系统错误码](errorcode-filemanagement.md)。
| 错误码ID | 错误信息 |
| ---------------------------- | ---------- |
| 401 | The input parameter is invalid. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 13600001 | IPC error. |
| 13900002 | No such file or directory. |
| 13900025 | No space left on device. |
| 14000002 | Invalid uri. |
### start11+
start(uri: string, callback: AsyncCallback<void>): void
异步方法启动云盘文件缓存, 以callback形式返回结果。
**系统能力**:SystemCapability.FileManagement.DistributedFileService.CloudSync.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------ | ---- | ---- |
| uri | string | 是 | 待下载文件uri。 |
| callback | AsyncCallback<void> | 是 | 异步启动云文件下载的回调。 |
**错误码:**
以下错误码的详细介绍请参见[文件管理子系统错误码](errorcode-filemanagement.md)。
| 错误码ID | 错误信息 |
| ---------------------------- | ---------- |
| 401 | The input parameter is invalid. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 13600001 | IPC error. |
| 13900002 | No such file or directory. |
| 13900025 | No space left on device. |
| 14000002 | Invalid uri. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
import { fileUri } from '@kit.CoreFileKit';
let fileCache = new cloudSync.CloudFileCache();
let path = "/data/storage/el2/cloud/1.txt";
let uri = fileUri.getUriFromPath(path);
fileCache.start(uri, (err: BusinessError) => {
if (err) {
console.error("start download failed with error message: " + err.message + ", error code: " + err.code);
} else {
console.info("start download successfully");
}
});
```
### stop11+
stop(uri: string, needClean?: boolean): Promise<void>
异步方法停止云盘文件缓存, 以Promise形式返回结果。
调用stop接口, 当前文件下载流程会终止, 缓存文件会被删除, 再次调用start接口会重新开始下载。
**系统能力**:SystemCapability.FileManagement.DistributedFileService.CloudSync.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------ | ---- | ---- |
| uri | string | 是 | 待下载文件uri。 |
| needClean12+ | boolean | 否 | 是否删除已下载的文件,默认删除。
从API version12开始支持该参数。 |
**返回值:**
| 类型 | 说明 |
| --------------------- | ---------------- |
| Promise<void> | 使用Promise形式返回停止云文件下载的结果。 |
**错误码:**
以下错误码的详细介绍请参见[文件管理子系统错误码](errorcode-filemanagement.md)。
| 错误码ID | 错误信息 |
| ---------------------------- | ---------- |
| 401 | The input parameter is invalid. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 13600001 | IPC error. |
| 13900002 | No such file or directory. |
| 14000002 | Invalid URI. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
import { fileUri } from '@kit.CoreFileKit';
let fileCache = new cloudSync.CloudFileCache();
let path = "/data/storage/el2/cloud/1.txt";
let uri = fileUri.getUriFromPath(path);
fileCache.stop(uri, true).then(() => {
console.info("stop download successfully");
}).catch((err: BusinessError) => {
console.error("stop download failed with error message: " + err.message + ", error code: " + err.code);
});
```
### stop11+
stop(uri: string, callback: AsyncCallback<void>): void
异步方法停止云盘文件缓存, 以callback形式返回结果。
调用stop接口, 当前文件下载流程会终止, 缓存文件会被删除, 再次调用start接口会重新开始下载。
**系统能力**:SystemCapability.FileManagement.DistributedFileService.CloudSync.Core
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------ | ---- | ---- |
| uri | string | 是 | 待下载文件uri。 |
| callback | AsyncCallback<void> | 是 | 异步停止云文件下载的回调。 |
**错误码:**
以下错误码的详细介绍请参见[文件管理子系统错误码](errorcode-filemanagement.md)。
| 错误码ID | 错误信息 |
| ---------------------------- | ---------- |
| 401 | The input parameter is invalid. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 13600001 | IPC error. |
| 13900002 | No such file or directory. |
| 14000002 | Invalid URI. |
**示例:**
```ts
import { BusinessError } from '@kit.BasicServicesKit';
import { fileUri } from '@kit.CoreFileKit';
let fileCache = new cloudSync.CloudFileCache();
let path = "/data/storage/el2/cloud/1.txt";
let uri = fileUri.getUriFromPath(path);
fileCache.stop(uri, (err: BusinessError) => {
if (err) {
console.error("stop download failed with error message: " + err.message + ", error code: " + err.code);
} else {
console.info("stop download successfully");
}
});
```
## DownloadErrorType11+
端云下载错误类型,为枚举类型。
**系统能力**: SystemCapability.FileManagement.DistributedFileService.CloudSync.Core
| 名称 | 值| 说明 |
| ----- | ---- | ---- |
| NO_ERROR | 0 | 没有错误 |
| UNKNOWN_ERROR | 1 | 未知错误 |
| NETWORK_UNAVAILABLE | 2 | 网络不可用 |
| LOCAL_STORAGE_FULL | 3 | 本地空间不足 |
| CONTENT_NOT_FOUND | 4 | 云端空间未找到对应文件 |
| FREQUENT_USER_REQUESTS | 5 | 用户请求过于频繁 |