# 文件å系统ChangeLog ## cl.file.1 mediaLibrary相关接å£å˜æ›´ multimedia 部件 mediaLibrary所有接å£åºŸå¼ƒã€‚ **å˜æ›´å½±å“** [mediaLibrary](../../../application-dev/reference/apis/js-apis-medialibrary.md)所有接å£åºŸå¼ƒã€‚系统åªå¯¹ä¸‰æ–¹åº”用开放公共目录下文件资æºé€‰æ‹©å’Œä¿å˜åŠŸèƒ½ï¼Œç”±[FilePicker](../../../application-dev/reference/apis/js-apis-file-picker.md)æä¾›èƒ½åŠ›ã€‚ 基于æ¤å‰ç‰ˆæœ¬å¼€å‘的应用,需注æ„废弃接å£çš„è¿ä»£æ›´æ–°ã€‚ **关键接å£/ç»„ä»¶å˜æ›´** 以下为å¯ä»¥ä½¿ç”¨FilePicker替代的接å£ã€‚ | 模å—å | 方法/属性/枚举/å¸¸é‡ | å˜æ›´ç±»åž‹ | | ------------------------- | ------------------------------------------------------------ | -------- | | medialibrary | **function** getMediaLibrary(context: Context): MediaLibrary; | 废弃 | | medialibrary | **function** getFileAssets(options: MediaFetchOptions, callback: AsyncCallback\<FetchFileResult\>): void | 废弃 | | medialibrary | **function** getFileAssets(options: MediaFetchOptions): Promise\<FetchFileResult\> | 废弃 | | medialibrary | **function** createAsset(mediaType: MediaType, displayName: string, relativePath: string, callback: AsyncCallback\<FileAsset\>): void | 废弃 | | medialibrary | **function** createAsset(mediaType: MediaType, displayName: string, relativePath: string): Promise\<FileAsset\> | 废弃 | | medialibrary | **function** getPublicDirectory(type: DirectoryType, callback: AsyncCallback\<string\>): void | 废弃 | | medialibrary | **function** getPublicDirectory(type: DirectoryType): Promise\<string\> | 废弃 | | medialibrary | **function** release(callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** release(): Promise\<void\> | 废弃 | | medialibrary | **function** FileAsset.open(mode: string, callback: AsyncCallback\<number\>): void | 废弃 | | medialibrary | **function** FileAsset.open(mode: string): Promise\<number\> | 废弃 | | medialibrary | **function** FileAsset.close(fd: number, callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** FileAsset.close(fd: number): Promise\<void\> | 废弃 | | medialibrary | **function** FetchFileResult.getCount(): number | 废弃 | | medialibrary | **function** FetchFileResult.isAfterLast(): boolean | 废弃 | | medialibrary | **function** FetchFileResult.close(): void | 废弃 | | medialibrary | **function** FetchFileResult.getFirstObject(callback: AsyncCallback\<FileAsset\>): void | 废弃 | | medialibrary | **function** FetchFileResult.getFirstObject(): Promise\<FileAsset\> | 废弃 | | medialibrary | **function** FetchFileResult.getNextObject(callback: AsyncCallback\<FileAsset\>): void | 废弃 | | medialibrary | **function** FetchFileResult.getNextObject(): Promise\<FileAsset\> | 废弃 | | medialibrary | **function** FetchFileResult.getLastObject(callback: AsyncCallback\<FileAsset\>): void | 废弃 | | medialibrary | **function** FetchFileResult.getLastObject(): Promise\<FileAsset\> | 废弃 | | medialibrary | **function** FetchFileResult.getPositionObject(index: number, callback: AsyncCallback\<FileAsset\>): void | 废弃 | | medialibrary | **function** FetchFileResult.getPositionObject(index: number): Promise\<FileAsset\> | 废弃 | | medialibrary | **function** FetchFileResult.getAllObject(callback: AsyncCallback\<Array\<FileAsset\>\>): void | 废弃 | | medialibrary | **function** FetchFileResult.getAllObject(): Promise\<Array\<FileAsset\>\> | 废弃 | | medialibrary | **function** Album.getFileAssets(options: MediaFetchOptions, callback: AsyncCallback\<FetchFileResult\>): void | 废弃 | | medialibrary | **function** Album.getFileAssets(options?: MediaFetchOptions): Promise\<FetchFileResult\> | 废弃 | | medialibrary | **enum** FileKey | 废弃 | | medialibrary | **enum** DirectoryType | 废弃 | | medialibrary | **enum** MediaType | 废弃 | | medialibrary | **interface** MediaFetchOptions | 废弃 | | medialibrary | **interface** FileAsset | 废弃 | **适酿Œ‡å¯¼** **使用mediaLibrary接å£ç¼–辑公共目录下的文件示例:** 1. 使用getMediaLibrary接å£èŽ·å–媒体库实例。 2. 创建MediaFetchOptions检索æ¡ä»¶ä½¿ç”¨mediaLibrary实例调用getFileAssets接å£èŽ·å–公共目录下的文件。 3. 使用FetchFileResult相应接å£èŽ·å–目的文件的fileAsset。 4. 使用fileAsset.openæŽ¥å£æ‰“开这个文件得到fd。 5. 通过fd使用[fs.writeSync](../../../application-dev/reference/apis/js-apis-file-fs.md#writesync)接å£å¯¹è¿™ä¸ªæ–‡ä»¶è¿›è¡Œç¼–辑修改。 6. 修改完æˆåŽä½¿ç”¨fileAsset.close接å£å…³é—这个文件的fd。 7. 使用fetchFileResult.close接å£é‡Šæ”¾getFileAssetsæ—¶å 用的资æºã€‚ 8. 使用release接å£é‡Šæ”¾åª’体库实例。 **示例:** ```js import mediaLibrary from '@ohos.multimedia.mediaLibrary'; import fs from '@ohos.file.fs'; async function example() { try { let context = getContext(this); let media = mediaLibrary.getMediaLibrary(context); 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 fileAsset = await fetchFileResult.getFirstObject(); console.info('mediaLibrary fileAsset displayName: ' + fileAsset.displayName); let fd = await fileAsset.open('rw'); console.info('mediaLibrary fileAsset open fd: ' + fd); let writeLen = fs.writeSync(fd, 'hello, world'); console.info('write data to file succeed and size is: ' + writeLen); fileAsset.close(fd); fetchFileResult.close(); media.release(); } catch (err) { console.error('mediaLibrary fail, err: ' + err); } } ``` **使用FilePicker编辑公共目录下的文件示例:** 1. 获å–DocumentViewPicker文件选择器对象。 2. 拉起DocumentViewPicker.select接å£é€‰æ‹©ç›®çš„æ–‡ä»¶ã€‚ 3. 用户选择完åŽè¿”回目的文件的uri。 4. 待界é¢ä»ŽDocumentViewPicker返回åŽåœ¨å…¶ä»–函数ä¸ä½¿ç”¨[fs.openSync](../../../application-dev/reference/apis/js-apis-file-fs.md#fsopensync)接å£é€šè¿‡uri打开这个文件得到fd。 5. 通过fd使用[fs.writeSync](../../../application-dev/reference/apis/js-apis-file-fs.md#writesync)接å£å¯¹è¿™ä¸ªæ–‡ä»¶è¿›è¡Œç¼–辑修改。 6. 编辑修改完毕åŽä½¿ç”¨[fs.closeSync](../../../application-dev/reference/apis/js-apis-file-fs.md#closesync)接å£å…³é—这个fd。 **示例:** ```js import mediaLibrary from '@ohos.multimedia.mediaLibrary'; import picker from '@ohos.file.picker'; import fs from '@ohos.file.fs'; let uri; async function example() { try { let DocumentSelectOptions = new picker.DocumentSelectOptions(); let documentPicker = new picker.DocumentViewPicker(); documentPicker.select(DocumentSelectOptions).then((DocumentSelectResult) => { console.info('DocumentViewPicker.select successfully, DocumentSelectResult uri: ' + JSON.stringify(DocumentSelectResult)); uri = DocumentSelectResult[0]; }).catch((err) => { console.error('DocumentViewPicker.select failed with err: ' + err); }); } catch (err) { console.error('DocumentViewPicker failed with err: ' + err); } } async function writeFile() { try { let file = fs.openSync(uri, fs.OpenMode.READ_WRITE); console.info('DocumentViewPicker file fd: ' + file.fd); let writeLen = fs.writeSync(file.fd, 'hello, world'); console.info('write data to file succeed and size is: ' + writeLen); fs.closeSync(file); } catch (err) { console.error('DocumentViewPicker fail, err: ' + err); } } ``` **使用mediaLibrary接å£åœ¨å…¬å…±ç›®å½•下创建文件示例:** 1. 使用getMediaLibrary接å£èŽ·å–媒体库实例。 2. 使用getPublicDirectory接å£èŽ·å–公共目录路径。 3. 使用createAsset接å£åˆ›å»ºæ–‡ä»¶å¾—到这个文件的fileAsset。 4. 使用fileAsset.openæŽ¥å£æ‰“开这个文件得到fd。 5. 通过fd使用fs.write接å£å¯¹è¿™ä¸ªæ–‡ä»¶è¿›è¡Œç¼–辑修改。 6. 修改完æˆåŽä½¿ç”¨fileAsset.close接å£å…³é—这个文件的fd。 7. 使用release接å£é‡Šæ”¾åª’体库实例。 **示例:** ```js import mediaLibrary from '@ohos.multimedia.mediaLibrary'; import fs from '@ohos.file.fs'; async function example() { try { let context = getContext(this); let media = mediaLibrary.getMediaLibrary(context); let mediaType = mediaLibrary.MediaType.FILE; let DIR_DOWNLOAD = mediaLibrary.DirectoryType.DIR_DOWNLOAD; const path = await media.getPublicDirectory(DIR_DOWNLOAD); const fileAsset = await media.createAsset(mediaType, 'test.txt', path); console.info('mediaLibrary fileAsset displayName: ' + fileAsset.displayName); let fd = await fileAsset.open('rw'); console.info('mediaLibrary fileAsset open fd: ' + fd); let writeLen = fs.writeSync(fd, 'hello, world'); console.info('write data to file succeed and size is: ' + writeLen); fileAsset.close(fd); media.release(); } catch (err) { console.error('mediaLibrary fail, err: ' + err); } } ``` **使用FilePicker在公共目录下创建文件示例:** 1. 获å–DocumentViewPicker文件选择器对象。 2. 拉起DocumentViewPicker.save接å£åˆ›å»ºä¿å˜ä¸€ä¸ªç©ºçš„æ–‡ä»¶ã€‚ 3. 用户ä¿å˜å®ŒåŽè¿”回目的文件的uri。 4. 待界é¢ä»ŽDocumentViewPicker返回åŽåœ¨å…¶ä»–函数ä¸ä½¿ç”¨[fs.openSync](../../../application-dev/reference/apis/js-apis-file-fs.md#fsopensync)接å£é€šè¿‡uri打开这个文件得到fd。 5. 通过fd使用[fs.writeSync](../../../application-dev/reference/apis/js-apis-file-fs.md#writesync)接å£å¯¹è¿™ä¸ªæ–‡ä»¶è¿›è¡Œç¼–辑修改。 6. 编辑修改完毕åŽä½¿ç”¨[fs.closeSync](../../../application-dev/reference/apis/js-apis-file-fs.md#closesync)接å£å…³é—这个fd。 **示例:** ```js import mediaLibrary from '@ohos.multimedia.mediaLibrary'; import picker from '@ohos.file.picker'; import fs from '@ohos.file.fs'; let uri; async function example() { try { let DocumentSaveOptions = new picker.DocumentSaveOptions(); DocumentSaveOptions.newFileNames = ['DocumentViewPicker01.txt']; let documentPicker = new picker.DocumentViewPicker(); documentPicker.save(DocumentSaveOptions).then((DocumentSaveResult) => { console.info('DocumentViewPicker.save successfully, DocumentSaveResult uri: ' + JSON.stringify(DocumentSaveResult)); uri = DocumentSaveResult[0]; }).catch((err) => { console.error('DocumentViewPicker.save failed with err: ' + err); }); } catch (err) { console.error('DocumentViewPicker failed with err: ' + err); } } async function writeFile() { try { let file = fs.openSync(uri, fs.OpenMode.READ_WRITE); console.info('DocumentViewPicker file fd: ' + file.fd); let writeLen = fs.writeSync(file.fd, 'hello, world'); console.info('write data to file succeed and size is: ' + writeLen); fs.closeSync(file); } catch (err) { console.error('DocumentViewPicker fail, err: ' + err); } } ``` **关键接å£/ç»„ä»¶å˜æ›´** medialibrary以下废弃接å£ç”±äºŽåŠŸèƒ½ç®¡æŽ§ï¼Œä¸å¯¹ä¸‰æ–¹åº”ç”¨å¼€æ”¾ï¼Œæ— æ›¿ä»£æŽ¥å£ã€‚ | 模å—å | 方法/属性/枚举/å¸¸é‡ | å˜æ›´ç±»åž‹ | | ------------------------- | ------------------------------------------------------------ | -------- | | medialibrary | **function** getMediaLibrary(): MediaLibrary; | 废弃 | | medialibrary | **function** on(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback: Callback\<void\>): void | 废弃 | | medialibrary | **function** off(type: 'deviceChange'\|'albumChange'\|'imageChange'\|'audioChange'\|'videoChange'\|'fileChange'\|'remoteFileChange', callback?: Callback\<void\>): void | 废弃 | | medialibrary | **function** deleteAsset(uri: string): Promise\<void\> | 废弃 | | medialibrary | **function** deleteAsset(uri: string, callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** storeMediaAsset(option: MediaAssetOption, callback: AsyncCallback\<string\>): void | 废弃 | | medialibrary | **function** storeMediaAsset(option: MediaAssetOption): Promise\<string\> | 废弃 | | medialibrary | **function** startImagePreview(images: Array\<string\>, index: number, callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** startImagePreview(images: Array\<string\>, callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** startImagePreview(images: Array\<string\>, index?: number): Promise\<void\> | 废弃 | | medialibrary | **function** startMediaSelect(option: MediaSelectOption, callback: AsyncCallback\<Array\<string\>\>): void | 废弃 | | medialibrary | **function** startMediaSelect(option: MediaSelectOption): Promise\<Array\<string\>\> | 废弃 | | medialibrary | **function** getActivePeers(): Promise\<Array\<PeerInfo\>\>; | 废弃 | | medialibrary | **function** getActivePeers(callback: AsyncCallback\<Array\<PeerInfo\>\>): void; | 废弃 | | medialibrary | **function** getAllPeers(): Promise\<Array\<PeerInfo\>\>; | 废弃 | | medialibrary | **function** FileAsset.isDirectory(callback: AsyncCallback\<boolean\>): void | 废弃 | | medialibrary | **function** FileAsset.isDirectory():Promise\<boolean\> | 废弃 | | medialibrary | **function** FileAsset.commitModify(callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** FileAsset.commitModify(): Promise\<void\> | 废弃 | | medialibrary | **function** FileAsset.getThumbnail(callback: AsyncCallback\<image.PixelMap\>): void | 废弃 | | medialibrary | **function** FileAsset.getThumbnail(size: Size, callback: AsyncCallback\<image.PixelMap\>): void | 废弃 | | medialibrary | **function** FileAsset.getThumbnail(size?: Size): Promise\<image.PixelMap\> | 废弃 | | medialibrary | **function** FileAsset.favorite(isFavorite: boolean, callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** FileAsset.favorite(isFavorite: boolean): Promise\<void\> | 废弃 | | medialibrary | **function** FileAsset.isFavorite(callback: AsyncCallback\<boolean\>): void | 废弃 | | medialibrary | **function** FileAsset.isFavorite():Promise\<boolean\> | 废弃 | | medialibrary | **function** FileAsset.trash(isTrash: boolean, callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** FileAsset.trash(isTrash: boolean): Promise\<void\> | 废弃 | | medialibrary | **function** FileAsset.isTrash(callback: AsyncCallback\<boolean\>): void | 废弃 | | medialibrary | **function** FileAsset.isTrash():Promise\<boolean\> | 废弃 | | medialibrary | **function** getAlbums(options: MediaFetchOptions, callback: AsyncCallback\<Array\<Album\>\>): void | 废弃 | | medialibrary | **function** getAlbums(options: MediaFetchOptions): Promise\<Array\<Album\>\> | 废弃 | | medialibrary | **function** Album.commitModify(callback: AsyncCallback\<void\>): void | 废弃 | | medialibrary | **function** Album.commitModify(): Promise\<void\> | 废弃 | | medialibrary | **enum** DeviceType | 废弃 | | medialibrary | **interface** PeerInfo | 废弃 | | medialibrary | **interface** Size | 废弃 | | medialibrary | **interface** MediaAssetOption | 废弃 | | medialibrary | **interface** MediaSelectOption | 废弃 |