HarmonyOS API:文件管理

joytrian
发布于 2023-4-6 17:11
浏览
0收藏

版本:v3.1 Beta

@ohos.multimedia.medialibrary (媒体库管理)

FileAsset7+

提供封装文件属性的方法。


说明

  1. title字段默认为去掉后缀的文件名,音频和视频文件会尝试解析文件内容,部分设备写入后在触发扫描时会被还原。
  2. orientation字段部分设备可能不支持修改,建议使用image组件的​​ModifyImageProperty​​接口。

属性

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core

名称

类型

可读

可写

说明

id

number

文件资源编号

uri

string

文件资源uri(如:datashare:///media/image/2)

mimeType

string

文件扩展属性

mediaType8+

​MediaType​

媒体类型

displayName

string

显示文件名,包含后缀名

title

string

文件标题

relativePath8+

string

相对公共目录路径

parent8+

number

父目录id

size

number

文件大小(单位:字节)

dateAdded

number

添加日期(添加文件时间到1970年1月1日的秒数值)

dateModified

number

修改日期(修改文件时间到1970年1月1日的秒数值)

dateTaken

number

拍摄日期(文件拍照时间到1970年1月1日的秒数值)

artist8+

string

作者

audioAlbum8+

string

专辑

width

number

图片宽度(单位:像素)

height

number

图片高度(单位:像素)

orientation

number

图片显示方向(顺时针旋转角度,如0,90,180 单位:度)

duration8+

number

持续时间(单位:毫秒)

albumId

number

文件所归属的相册编号

albumUri8+

string

文件所归属相册uri

albumName

string

文件所归属相册名称

isDirectory8+

isDirectory(callback: AsyncCallback<boolean>): void

判断fileAsset是否为目录,使用callback方式返回异步结果。

需要权限:ohos.permission.READ_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数:

参数名

类型

必填

说明

callback

AsyncCallback<boolean>

当前FileAsset是否是目录的回调

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.isDirectory((error, isDirectory) => {
        if (error) {
            console.error('isDirectory failed with error: ' + error);
        } else {
            console.info('isDirectory result:' + isDirectory);
        }
    });
    fetchFileResult.close();
}

isDirectory8+

isDirectory():Promise<boolean>

判断fileAsset是否为目录,使用Promise方式返回异步结果。

需要权限:ohos.permission.READ_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

返回值:

类型

说明

Promise<boolean>

Promise实例,返回当前FileAsset是否是目录

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.isDirectory().then((isDirectory) => {
        console.info('isDirectory result:' + isDirectory);
    }).catch((error) => {
        console.error('isDirectory failed with error: ' + error);
    });
    fetchFileResult.close();
}

commitModify8+

commitModify(callback: AsyncCallback<void>): void

修改文件的元数据,使用callback方式返回异步结果。

需要权限:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数:

参数名

类型

必填

说明

callback

AsyncCallback<void>

回调返回空

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.title = 'newtitle';
    asset.commitModify(() => {
        console.info('commitModify successfully');   
    });
    fetchFileResult.close();
}

commitModify8+

commitModify(): Promise<void>

修改文件的元数据,使用promise方式返回异步结果。

需要权限:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

返回值:

类型

说明

Promise<void>

Promise返回空

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.title = 'newtitle';
    await asset.commitModify();
    fetchFileResult.close();
}

open8+

open(mode: string, callback: AsyncCallback<number>): void

打开当前文件,使用callback方式返回异步结果。

注意:以 'w' 模式打开文件时,返回的fd无法进行读取。但由于不同文件系统实现上的差异,部分用户态文件系统在 'w' 模式打开时会允许用fd读取。若有针对fd的读写行为,建议使用 'rw' 模式打开文件。当前写操作是互斥的操作,写操作完成后需要调用close进行释放。

需要权限:ohos.permission.READ_MEDIA or ohos.permission.WRITE_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数

参数名

类型

必填

说明

mode

string

打开文件方式,如:'r'(只读), 'w'(只写), 'rw'(读写)

callback

AsyncCallback<number>

回调返回文件句柄

示例:

async function example() {
    let mediaType = mediaLibrary.MediaType.IMAGE;
    let DIR_IMAGE = mediaLibrary.DirectoryType.DIR_IMAGE;
    const path = await media.getPublicDirectory(DIR_IMAGE);
    const asset = await media.createAsset(mediaType, 'image00003.jpg', path);
    asset.open('rw', (error, fd) => {
        if (fd > 0) {
            asset.close(fd);
        } else {
            console.error('File Open failed with error: ' + error);
        }
    });
}

open8+

open(mode: string): Promise<number>

打开当前文件,使用promise方式返回异步结果。

注意:以 'w' 模式打开文件时,返回的fd无法进行读取。但由于不同文件系统实现上的差异,部分用户态文件系统在 'w' 模式打开时会允许用fd读取。若有针对fd的读写行为,建议使用 'rw' 模式打开文件。当前写操作是互斥的操作,写操作完成后需要调用close进行释放。

需要权限:ohos.permission.READ_MEDIA or ohos.permission.WRITE_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数:

参数名

类型

必填

说明

mode

string

打开文件方式,如:'r'(只读), 'w'(只写), 'rw'(读写)

返回值:

类型

说明

Promise<number>

Promise返回文件句柄

示例:

async function example() {
    let mediaType = mediaLibrary.MediaType.IMAGE;
    let DIR_IMAGE = mediaLibrary.DirectoryType.DIR_IMAGE;
    const path = await media.getPublicDirectory(DIR_IMAGE);
    const asset = await media.createAsset(mediaType, 'image00003.jpg', path);
    asset.open('rw').then((fd) => {
        console.info('File open fd: ' + fd);
    }).catch((error) => {
        console.error('File open failed with error: ' + error);
    });
}

close8+

close(fd: number, callback: AsyncCallback<void>): void

关闭当前文件,使用callback方式返回异步结果。

需要权限:ohos.permission.READ_MEDIA or ohos.permission.WRITE_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数:

参数名

类型

必填

说明

fd

number

文件描述符

callback

AsyncCallback<void>

回调返回空

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.open('rw').then((fd) => {
        console.info('File open fd: ' + fd);
        asset.close(fd, (error) => {
            if (error) {
                console.error('asset.close failed with error: ' + error);
            } else {
                console.info('asset.close successfully');
            }
        });
    }).catch((error) => {
        console.error('File open failed with error: ' + error);
    });
    fetchFileResult.close();
}

close8+

close(fd: number): Promise<void>

关闭当前文件,使用promise方式返回异步结果。

需要权限:ohos.permission.READ_MEDIA or ohos.permission.WRITE_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数:

参数名

类型

必填

说明

fd

number

文件描述符

返回值:

类型

说明

Promise<void>

Promise返回空

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.open('rw').then((fd) => {
        console.info('File fd!' + fd);
        asset.close(fd).then(() => {
            console.info('asset.close successfully');
        }).catch((closeErr) => {
            console.error('asset.close fail, closeErr: ' + closeErr);
        });
    }).catch((error) => {
        console.error('open File failed with error: ' + error);
    });
    fetchFileResult.close();
}

getThumbnail8+

getThumbnail(callback: AsyncCallback<image.PixelMap>): void

获取文件的缩略图,使用callback方式返回异步结果。

需要权限:ohos.permission.READ_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数:

参数名

类型

必填

说明

callback

AsyncCallback<image.PixelMap>

回调返回缩略图的PixelMap

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.getThumbnail((error, pixelmap) => {
        if (error) {
            console.error('mediaLibrary getThumbnail failed with error: ' + error);
        } else {
            console.info('mediaLibrary getThumbnail Successful, pixelmap ' + JSON.stringify(pixelmap));
        }
    });
    fetchFileResult.close();
}

getThumbnail8+

getThumbnail(size: Size, callback: AsyncCallback<image.PixelMap>): void

获取文件的缩略图,传入缩略图尺寸,使用callback方式返回异步结果。

需要权限:ohos.permission.READ_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数:

参数名

类型

必填

说明

size

​Size​

缩略图尺寸

callback

AsyncCallback<image.PixelMap>

回调返回缩略图的PixelMap

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    let size = { width: 720, height: 720 };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.getThumbnail(size, (error, pixelmap) => {
        if (error) {
            console.error('mediaLibrary getThumbnail failed with error: ' + error);
        } else {
            console.info('mediaLibrary getThumbnail Successful, pixelmap ' + JSON.stringify(pixelmap));
        }
    });
    fetchFileResult.close();
}

getThumbnail8+

getThumbnail(size?: Size): Promise<image.PixelMap>

获取文件的缩略图,传入缩略图尺寸,使用promise方式返回异步结果。

需要权限:ohos.permission.READ_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数:

参数名

类型

必填

说明

size

​Size​

缩略图尺寸

返回值:

类型

说明

Promise<image.PixelMap>

Promise返回缩略图的PixelMap

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    let size = { width: 720, height: 720 };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.getThumbnail(size).then((pixelmap) => {
        console.info('mediaLibrary getThumbnail Successful, pixelmap ' + JSON.stringify(pixelmap));
    }).catch((error) => {
        console.error('mediaLibrary getThumbnail failed with error: ' + error);
    });
    fetchFileResult.close();
}

favorite8+

favorite(isFavorite: boolean, callback: AsyncCallback<void>): void

将文件设置为收藏文件,使用callback方式返回异步结果。

需要权限:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数:

参数名

类型

必填

说明

isFavorite

boolean

是否设置为收藏文件, true:设置为收藏文件,false:取消收藏

callback

AsyncCallback<void>

回调返回空

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.favorite(true,(error) => {
        if (error) {
            console.error('mediaLibrary favorite failed with error: ' + error);
        } else {
            console.info('mediaLibrary favorite Successful');
        }
    });
    fetchFileResult.close();
}

favorite8+

favorite(isFavorite: boolean): Promise<void>

将文件设置为收藏文件,使用promise方式返回异步结果。

需要权限:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数:

参数名

类型

必填

说明

isFavorite

boolean

是否设置为收藏文件, true:设置为收藏文件,false:取消收藏

返回值:

类型

说明

Promise<void>

Promise返回空

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.favorite(true).then(() => {
        console.info('mediaLibrary favorite Successful');
    }).catch((error) => {
        console.error('mediaLibrary favorite failed with error: ' + error);
    });
    fetchFileResult.close();
}

isFavorite8+

isFavorite(callback: AsyncCallback<boolean>): void

判断该文件是否为收藏文件,使用callback方式返回异步结果。

需要权限:ohos.permission.READ_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数:

参数名

类型

必填

说明

callback

AsyncCallback<boolean>

回调表示是否为收藏文件

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.isFavorite((error, isFavorite) => {
        if (error) {
            console.error('mediaLibrary favoriisFavoritete failed with error: ' + error);
        } else {
            console.info('mediaLibrary isFavorite Successful, isFavorite result: ' + isFavorite);
        }
    });
    fetchFileResult.close();
}

isFavorite8+

isFavorite():Promise<boolean>

判断该文件是否为收藏文件,使用promise方式返回异步结果。

需要权限:ohos.permission.READ_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

返回值:

类型

说明

Promise<boolean>

Promise回调表示是否是收藏文件

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.isFavorite().then((isFavorite) => {
        console.info('mediaLibrary isFavorite Successful, isFavorite result: ' + isFavorite);
    }).catch((error) => {
        console.error('mediaLibrary favoriisFavoritete failed with error: ' + error);
    });
    fetchFileResult.close();
}

trash8+

trash(isTrash: boolean, callback: AsyncCallback<void>): void

当文件被定位时,将文件放到垃圾文件夹,使用callback方式返回异步结果。

放入垃圾文件夹的文件不会被真正删除,可以通过isTrash = false参数恢复成正常文件。

需要权限:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数:

参数名

类型

必填

说明

isTrash

boolean

是否设置为垃圾文件

callback

AsyncCallback<void>

回调返回空

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.trash(true, (error) => {
        if (error) {
            console.error('mediaLibrary trash failed with error: ' + error);
        } else {
            console.info('mediaLibrary trash Successful');
        }
    });
    fetchFileResult.close();
}

trash8+

trash(isTrash: boolean): Promise<void>

当文件被定位时,将文件放到垃圾文件夹,使用promise方式返回异步结果。

放入垃圾文件夹的文件不会被真正删除,可以通过isTrash = false参数恢复成正常文件。

需要权限:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数:

参数名

类型

必填

说明

isTrash

boolean

是否设置为垃圾文件

返回值:

类型

说明

Promise<void>

Promise返回空

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.trash(true).then(() => {
        console.info('trash successfully');
    }).catch((error) => {
        console.error('trash failed with error: ' + error);
    });
    fetchFileResult.close();
}

isTrash8+

isTrash(callback: AsyncCallback<boolean>): void

当文件被定位,判断文件是否为垃圾文件,使用callback方式返回异步结果。

需要权限:ohos.permission.READ_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数:

参数名

类型

必填

说明

callback

AsyncCallback<boolean>

回调返回表示文件是否为垃圾文件

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.isTrash((error, isTrash) => {
        if (error) {
            console.error('Failed to get trash state failed with error: ' + error);
            return;
        }
        console.info('Get trash state successfully, isTrash result: ' + isTrash);
    });
    fetchFileResult.close();
}

isTrash8+

isTrash():Promise<boolean>

当文件被定位,判断文件是否为垃圾文件,使用promise方式返回异步结果。

需要权限:ohos.permission.READ_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

返回值:

类型

说明

Promise<void>

Promise回调表示文件是否为垃圾文件

示例:

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    const fetchFileResult = await media.getFileAssets(getImageOp);
    const asset = await fetchFileResult.getFirstObject();
    asset.isTrash().then((isTrash) => {
        console.info('isTrash result: ' + isTrash);
    }).catch((error) => {
        console.error('isTrash failed with error: ' + error);
    });
    fetchFileResult.close();
}

FetchFileResult7+

文件检索结果集。

getCount7+

getCount(): number

获取文件检索结果中的文件总数。

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

返回值

类型

说明

number

检索到的文件总数

示例

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let fileType = mediaLibrary.MediaType.FILE;
    let getFileCountOneOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [fileType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    let fetchFileResult = await media.getFileAssets(getFileCountOneOp);
    const fetchCount = fetchFileResult.getCount();
    console.info('fetchCount result: ' + fetchCount);
    fetchFileResult.close();
}

isAfterLast7+

isAfterLast(): boolean

检查结果集是否指向最后一行。

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

返回值

类型

说明

boolean

当读到最后一条记录后,后续没有记录返回true,否则返回false。

示例

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    let fetchFileResult = await media.getFileAssets(getImageOp);
    const fetchCount = fetchFileResult.getCount();
    console.info('mediaLibrary fetchFileResult.getCount, count:' + fetchCount);
    let fileAsset = await fetchFileResult.getFirstObject();
    for (var i = 1; i < fetchCount; i++) {
        fileAsset = await fetchFileResult.getNextObject();
        if(i == fetchCount - 1) {
            var result = fetchFileResult.isAfterLast();
            console.info('mediaLibrary fileAsset isAfterLast result: ' + result);
        }
    }
    fetchFileResult.close();
}

close7+

close(): void

释放 FetchFileResult 实例并使其失效。无法调用其他方法。

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

示例

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    let fetchFileResult = await media.getFileAssets(getImageOp);
    fetchFileResult.close();
}

getFirstObject7+

getFirstObject(callback: AsyncCallback<FileAsset>): void

获取文件检索结果中的第一个文件资产。此方法使用回调返回FileAsset。

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数

参数名

类型

必填

说明

callback

AsyncCallback<​​FileAsset​​>

异步获取结果集中第一个FileAsset完成后的回调

示例

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    let fetchFileResult = await media.getFileAssets(getImageOp);
    fetchFileResult.getFirstObject((error, fileAsset) => {
        if (error) {
            console.error('fetchFileResult getFirstObject failed with error: ' + error);
            return;
        }
        console.info('getFirstObject successfully, displayName : ' + fileAsset.displayName);
    })
    fetchFileResult.close();
}

getFirstObject7+

getFirstObject(): Promise<FileAsset>

获取文件检索结果中的第一个文件资产。此方法使用Promise方式返回FileAsset。

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

返回值

类型

说明

Promise<​​FileAsset​​>

Promise方式返回FileAsset。

示例

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    let fetchFileResult = await media.getFileAssets(getImageOp);
    fetchFileResult.getFirstObject().then((fileAsset) => {
        console.info('getFirstObject successfully, displayName: ' + fileAsset.displayName);
    }).catch((error) => {
        console.error('getFirstObject failed with error: ' + error);
    });
    fetchFileResult.close();
}

getNextObject7+

getNextObject(callback: AsyncCallback<FileAsset>): void

获取文件检索结果中的下一个文件资产。此方法使用callback形式返回结果。

说明

在使用前需要先使用​​getFirstObject​​​接口获取第一个文件资产,然后使用​​isAfterLast​​确认文件检索集当前不是指向最后一个时方可使用此接口。

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数

参数名

类型

必填

说明

callbacke

AsyncCallback<​​FileAsset​​>

异步返回结果集中下一个FileAsset之后的回调

示例

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    let fetchFileResult = await media.getFileAssets(getImageOp);
    let fileAsset = await fetchFileResult.getFirstObject();
    if (!fetchFileResult.isAfterLast) {
        fetchFileResult.getNextObject((error, fileAsset) => {
            if (error) {
                console.error('fetchFileResult getNextObject failed with error: ' + error);
                return;
            }
            console.log('fetchFileResult getNextObject successfully, displayName: ' + fileAsset.displayName);
        })
    }
    fetchFileResult.close();
}

getNextObject7+

getNextObject(): Promise<FileAsset>

获取文件检索结果中的下一个文件资产。此方法使用promise方式来异步返回FileAsset。

说明

在使用前需要先使用​​getFirstObject​​​接口获取第一个文件资产,然后使用​​isAfterLast​​确认文件检索集当前不是指向最后一个时方可使用此接口。

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

返回值

类型

说明

Promise<​​FileAsset​​>

返回FileAsset对象

示例

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    let fetchFileResult = await media.getFileAssets(getImageOp);
    let fileAsset = await fetchFileResult.getFirstObject();
    if (!fetchFileResult.isAfterLast) {
        fetchFileResult.getNextObject().then((fileAsset) => {
            console.info('fetchFileResult getNextObject successfully, displayName: ' + fileAsset.displayName);
        }).catch((error) => {
            console.error('fetchFileResult getNextObject failed with error: ' + error);
        })
    }
    fetchFileResult.close();
}

getLastObject7+

getLastObject(callback: AsyncCallback<FileAsset>): void

获取文件检索结果中的最后一个文件资产。此方法使用callback回调来返回FileAsset。

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数

参数名

类型

必填

说明

callback

AsyncCallback<​​FileAsset​​>

异步返回FileAsset之后的回调

示例

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    let fetchFileResult = await media.getFileAssets(getImageOp);
    fetchFileResult.getLastObject((error, fileAsset) => {
        if (error) {
            console.error('getLastObject failed with error: ' + error);
            return;
        }
        console.info('getLastObject successfully, displayName: ' + fileAsset.displayName);
    })
    fetchFileResult.close();
}

getLastObject7+

getLastObject(): Promise<FileAsset>

获取文件检索结果中的最后一个文件资产。此方法使用Promise方式来返回FileAsset。

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

返回值

类型

说明

Promise<​​FileAsset​​>

返回FileAsset对象

示例

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    let fetchFileResult = await media.getFileAssets(getImageOp);
    fetchFileResult.getLastObject().then((fileAsset) => {
        console.info('getLastObject successfully, displayName: ' + fileAsset.displayName);
    }).catch((error) => {
        console.error('getLastObject failed with error: ' + error);
    });
    fetchFileResult.close();
}

getPositionObject7+

getPositionObject(index: number, callback: AsyncCallback<FileAsset>): void

获取文件检索结果中具有指定索引的文件资产。此方法使用回调来返回FileAsset。

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数

参数名

类型

必填

说明

index

number

要获取的文件的索引,从0开始(注意该值要小于文件检索集的count值)

callback

AsyncCallback<​​FileAsset​​>

异步返回FileAsset之后的回调

示例

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    let fetchFileResult = await media.getFileAssets(getImageOp);
    fetchFileResult.getPositionObject(0, (error, fileAsset) => {
        if (error) {
            console.error('getPositionObject failed with error: ' + error);
            return;
        }
        console.info('getPositionObject successfully, displayName: ' + fileAsset.displayName);
    })
    fetchFileResult.close();
}

getPositionObject7+

getPositionObject(index: number): Promise<FileAsset>

获取文件检索结果中具有指定索引的文件资产。此方法使用Promise形式返回文件Asset。

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数

参数名

类型

必填

说明

index

number

要获取的文件的索引,从0开始(注意该值要小于文件检索集的count值)

返回值

类型

说明

Promise<​​FileAsset​​>

返回FileAsset对象

示例

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    let fetchFileResult = await media.getFileAssets(getImageOp);
    fetchFileResult.getPositionObject(0).then((fileAsset) => {
        console.info('getPositionObject successfully, displayName: ' + fileAsset.displayName);
    }).catch((error) => {
        console.error('getPositionObject failed with error: ' + error);
    });
    fetchFileResult.close();
}

getAllObject7+

getAllObject(callback: AsyncCallback<Array<FileAsset>>): void

获取文件检索结果中的所有文件资产。此方法使用Callback回调来返回FileAsset结果集。

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数

参数名

类型

必填

说明

callback

AsyncCallback<Array<​​FileAsset​​>>

异步返回FileAsset列表之后的回调

示例

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    let fetchFileResult = await media.getFileAssets(getImageOp);
    fetchFileResult.getAllObject((error, fileAssetList) => {
        if (error) {
           console.error('getAllObject failed with error: ' + error);
           return;
        }
        for (let i = 0; i < fetchFileResult.getCount(); i++) {
            console.info('getAllObject fileAssetList ' + i + ' displayName: ' + fileAssetList[i].displayName);
        } 
    })
    fetchFileResult.close();
}

getAllObject7+

getAllObject(): Promise<Array<FileAsset>>

获取文件检索结果中的所有文件资产。此方法使用Promise来返回FileAsset结果集。

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

返回值

类型

说明

Promise<Array<​​FileAsset​​>>

返回FileAsset对象列表

示例

async function example() {
    let fileKeyObj = mediaLibrary.FileKey;
    let imageType = mediaLibrary.MediaType.IMAGE;
    let getImageOp = {
        selections: fileKeyObj.MEDIA_TYPE + '= ?',
        selectionArgs: [imageType.toString()],
        order: fileKeyObj.DATE_ADDED + ' DESC',
    };
    let fetchFileResult = await media.getFileAssets(getImageOp);
    fetchFileResult.getAllObject().then((fileAssetList) => {
        for (let i = 0; i < fetchFileResult.getCount(); i++) {
            console.info('getAllObject fileAssetList ' + i + ' displayName: ' + fileAssetList[i].displayName);
        } 
    }).catch((error) => {
        console.error('getAllObject failed with error: ' + error);
    });
    fetchFileResult.close();
}

Album7+

实体相册

属性

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core

名称

类型

可读

可写

说明

albumId

number

相册编号

albumName

string

相册名称

albumUri8+

string

相册Uri

dateModified

number

修改日期

count8+

number

相册中文件数量

relativePath8+

string

相对路径

coverUri8+

string

封面文件Uri

commitModify8+

commitModify(callback: AsyncCallback<void>): void

更新相册属性修改到数据库中。

需要权限:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数

参数名

类型

必填

说明

callback

AsyncCallback<void>

回调返回空

示例

async function example() {
    let AlbumNoArgsfetchOp = {
        selections: '',
        selectionArgs: [],
    };
    const albumList = await media.getAlbums(AlbumNoArgsfetchOp);
    const album = albumList[0];
    album.albumName = 'hello';
    album.commitModify((error) => {
        if (error) {
            console.error('commitModify failed with error: ' + error);
            return;
        }
        console.info('commitModify successful.');
    })
}

commitModify8+

commitModify(): Promise<void>

更新相册属性修改到数据库中。

需要权限:ohos.permission.READ_MEDIA, ohos.permission.WRITE_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

返回值

类型

说明

Promise<void>

Promise调用返回空

示例

async function example() {
    let AlbumNoArgsfetchOp = {
        selections: '',
        selectionArgs: [],
    };
    const albumList = await media.getAlbums(AlbumNoArgsfetchOp);
    const album = albumList[0];
    album.albumName = 'hello';
    album.commitModify().then(() => {
        console.info('commitModify successfully');
    }).catch((error) => {
        console.error('commitModify failed with error: ' + error);
    });
}

getFileAssets7+

getFileAssets(options: MediaFetchOptions, callback: AsyncCallback<FetchFileResult>): void

按照检索条件获取相册中的文件。此方法使用Callback回调来返回文件结果集。

需要权限:ohos.permission.READ_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数

参数名

类型

必填

说明

options

​MediaFetchOptions​

媒体检索选项。

callback

AsyncCallback<​​FetchFileResult​​>

异步返回FetchFileResult之后的回调。

示例

async function example() {
    let AlbumNoArgsfetchOp = {
        selections: '',
        selectionArgs: [],
    };
    let fileNoArgsfetchOp = {
        selections: '',
        selectionArgs: [],
    }
    // 获取符合检索要求的相册,返回相册列表
    const albumList = await media.getAlbums(AlbumNoArgsfetchOp);
    const album = albumList[0];
    // 取到相册列表中的一个相册,获取此相册中所有符合媒体检索选项的媒体资源
    album.getFileAssets(fileNoArgsfetchOp, (error, fetchFileResult) => {
        if (error) {
            console.error('album getFileAssets failed with error: ' + error);
            return;
        }
        let count = fetchFileResult.getcount();
        console.info('album getFileAssets successfully, count: ' + count);
    });
    fetchFileResult.close();
}

getFileAssets7+

getFileAssets(options?: MediaFetchOptions): Promise<FetchFileResult>

按照检索条件获取相册中的文件。此方法使用异步Promise来返回文件结果集。

需要权限:ohos.permission.READ_MEDIA

系统能力:SystemCapability.Multimedia.MediaLibrary.Core

参数

参数名

类型

必填

说明

options

​MediaFetchOptions​

媒体检索选项。

返回值

类型

说明

Promise<​​FetchFileResult​​>

返回FetchFileResult对象。

示例

async function example() {
    let AlbumNoArgsfetchOp = {
        selections: '',
        selectionArgs: [],
    };
        let fileNoArgsfetchOp = {
        selections: '',
        selectionArgs: [],
    };
    // 获取符合检索要求的相册,返回相册列表
    const albumList = await media.getAlbums(AlbumNoArgsfetchOp);
    const album = albumList[0];
    // 取到相册列表中的一个相册,获取此相册中所有符合媒体检索选项的媒体资源
    album.getFileAssets(fileNoArgsfetchOp).then((albumFetchFileResult) => {
        let count = fetchFileResult.getcount();
        console.info('album getFileAssets successfully, count: ' + count);
    }).catch((error) => {
        console.error('album getFileAssets failed with error: ' + error);
    });
    fetchFileResult.close();
}

MediaType8+

枚举,媒体类型。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core

名称

说明

FILE

0

文件

IMAGE

1

图片

VIDEO

2

视频

AUDIO

3

音频

FileKey8+

枚举,文件关键信息。

说明

bucket_id字段在文件重命名或移动后可能会发生变化,开发者使用前需要重新获取。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core

名称

说明

ID

'file_id'

文件编号

RELATIVE_PATH

'relative_path'

相对公共目录路径

DISPLAY_NAME

'display_name'

显示名字

PARENT

'parent'

父目录id

MIME_TYPE

'mime_type'

文件扩展属性

(如:image/*、video/、file/)

MEDIA_TYPE

'media_type'

媒体类型

SIZE

'size'

文件大小(单位:字节)

DATE_ADDED

'date_added'

添加日期(添加文件时间到1970年1月1日的秒数值)

DATE_MODIFIED

'date_modified'

修改日期(修改文件时间到1970年1月1日的秒数值)

DATE_TAKEN

'date_taken'

拍摄日期(文件拍照时间到1970年1月1日的秒数值)

TITLE

'title'

文件标题

ARTIST

'artist'

作者

AUDIOALBUM

'audio_album'

专辑

DURATION

'duration'

持续时间(单位:毫秒)

WIDTH

'width'

图片宽度(单位:像素)

HEIGHT

'height'

图片高度(单位:像素)

ORIENTATION

'orientation'

图片显示方向,即顺时针旋转角度,如0,90,180。(单位:度)

ALBUM_ID

'bucket_id'

文件所归属的相册编号

ALBUM_NAME

'bucket_display_name'

文件所归属相册名称

DirectoryType8+

枚举,目录类型。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core

名称

说明

DIR_CAMERA

0

表示Camera文件路径

DIR_VIDEO

1

表示视频路径

DIR_IMAGE

2

表示图片路径

DIR_AUDIO

3

表示音频路径

DIR_DOCUMENTS

4

表示文档路径

DIR_DOWNLOAD

5

表示下载路径

MediaFetchOptions7+

检索条件。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core

名称

类型

可读

可写

说明

selections

string

检索条件,使用​​FileKey​​中的枚举值作为检索条件的列名。示例:

selections: mediaLibrary.FileKey.MEDIA_TYPE + '= ? OR ' + mediaLibrary.FileKey.MEDIA_TYPE + '= ?',

selectionArgs

Array<string>

检索条件的值,对应selections中检索条件列的值。

示例:

selectionArgs: [mediaLibrary.MediaType.IMAGE.toString(), mediaLibrary.MediaType.VIDEO.toString()],

order

string

检索结果排序方式,使用​​FileKey​​中的枚举值作为检索结果排序的列,可以用升序或降序排列。示例:

升序排列:order: mediaLibrary.FileKey.DATE_ADDED + ' ASC'

降序排列:order: mediaLibrary.FileKey.DATE_ADDED + ' DESC'

uri8+

string

文件URI

networkId8+

string

注册设备网络ID

extendArgs8+

string

扩展的检索参数,目前没有扩展检索参数

Size8+

图片尺寸。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core

名称

类型

可读

可写

说明

width

number

宽(单位:像素)

height

number

高(单位:像素)

MediaAssetOption(deprecated)

媒体资源选项。

说明

从API Version 9开始废弃。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core

名称

类型

可读

可写

说明

src

string

本地文件应用沙箱路径。

mimeType

string

媒体MIME(Multipurpose Internet Mail Extensions)类型。

包括:'image/*'、'video/*'、'audio/*'、 'file*'。

relativePath

string

自定义媒体资源保存位置,例:Pictures/ 不填则保存到默认路径。

image类型默认路径Pictures/

video类型默认路径Videos/

audio类型默认路径Audios/

file类型默认路径Documents/ 。

MediaSelectOption(deprecated)

媒体资源类型选项。

说明

从API Version 9开始废弃。

系统能力: 以下各项对应的系统能力均为SystemCapability.Multimedia.MediaLibrary.Core

名称

类型

可读

可写

说明

type

'image' | 'video' | 'media'

媒体类型,包括:image, video, media,当前仅支持media类型

count

number

媒体选择,count = 1表示单选,count大于1表示多选。


文章转载自:​​https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-medialibrary-0000001478061921-V3?catalogVersion=V3#ZH-CN_TOPIC_0000001478061921__mediaselectoptiondeprecated​

分类
已于2023-4-6 17:11:19修改
收藏
回复
举报
回复