您的位置:首页 > 教育 > 锐评 > 男人和女人一起对愁愁的说话_网页设计认证培训_手游推广平台_seo软件优化

男人和女人一起对愁愁的说话_网页设计认证培训_手游推广平台_seo软件优化

2025/4/18 23:36:54 来源:https://blog.csdn.net/weixin_48639457/article/details/147275499  浏览:    关键词:男人和女人一起对愁愁的说话_网页设计认证培训_手游推广平台_seo软件优化
男人和女人一起对愁愁的说话_网页设计认证培训_手游推广平台_seo软件优化
import { uniformTypeDescriptor } from '@kit.ArkData';
import { filePreview } from '@kit.PreviewKit';
import { FileUtil } from './FileUtil';
import { AppUtil } from './AppUtil';
import { WantUtil } from './WantUtil';/*** 文件预览工具类* 提供文件预览、加载、判断等功能。* author: CSDN-鸿蒙布道师* since: 2025/04/16*/
export class PreviewUtil {/*** 通过传入文件预览信息,打开预览窗口。1秒内重复调用无效。* @param previewInfo 文件的预览信息* @returns Promise<void>*/static openPreview(previewInfo: filePreview.PreviewInfo): Promise<void> {if (!previewInfo) {throw new Error("PreviewInfo cannot be empty.");}return filePreview.openPreview(AppUtil.getContext(), previewInfo);}/*** 通过传入文件的 URI,打开预览窗口。1秒内重复调用无效。* @param uri 文件的 URI* @returns Promise<void>*/static async openPreviewEasy(uri: string): Promise<void> {if (!uri) {throw new Error("URI cannot be empty.");}const previewInfo = PreviewUtil.generatePreviewInfo(uri);return filePreview.openPreview(AppUtil.getContext(), previewInfo);}/*** 根据文件的 URI 判断文件是否可预览。* @param uri 文件的 URI* @returns Promise<boolean>*/static canPreview(uri: string): Promise<boolean> {if (!uri) {throw new Error("URI cannot be empty.");}return filePreview.canPreview(AppUtil.getContext(), uri);}/*** 判断预览窗口是否已经存在。* @returns Promise<boolean>*/static hasDisplayed(): Promise<boolean> {return filePreview.hasDisplayed(AppUtil.getContext());}/*** 关闭预览窗口,仅当预览窗口存在时起效。*/static closePreview(): void {filePreview.closePreview(AppUtil.getContext());}/*** 加载预览文件信息。仅当预览窗口存在时起效。* @param previewInfo 文件的预览信息* @returns Promise<void>*/static loadData(previewInfo: filePreview.PreviewInfo): Promise<void> {if (!previewInfo) {throw new Error("PreviewInfo cannot be empty.");}return filePreview.loadData(AppUtil.getContext(), previewInfo);}/*** 加载预览文件信息。仅当预览窗口存在时起效。* @param uri 文件的 URI* @returns Promise<void>*/static async loadDataEasy(uri: string): Promise<void> {if (!uri) {throw new Error("URI cannot be empty.");}const previewInfo = PreviewUtil.generatePreviewInfo(uri);return filePreview.loadData(AppUtil.getContext(), previewInfo);}/*** 调用其他应用预览文件。* @param uri 文件的 URI* @param write 是否有写入权限,默认为 true* @returns Promise<void>*/static onSharePreview(uri: string, write: boolean = true): Promise<void> {if (!uri) {throw new Error("URI cannot be empty.");}return WantUtil.openFile(uri, write);}/*** 根据文件 URI 构建 PreviewInfo。* @param uri 文件的 URI* @returns filePreview.PreviewInfo*/static generatePreviewInfo(uri: string): filePreview.PreviewInfo {if (!uri) {throw new Error("URI cannot be empty.");}const fileName = FileUtil.getFileName(uri);const fileExtention = FileUtil.getFileExtention(fileName);const mimeType = PreviewUtil.getMimeType(fileExtention);return {title: fileName,uri: uri,mimeType: mimeType,};}/*** 根据文件后缀名获取 TypeDescriptor(标准化数据类型的描述类)。* @param fileExtention 文件后缀名,例如:html txt doc ts mp3* @returns uniformTypeDescriptor.TypeDescriptor*/static getTypeDescriptor(fileExtention: string): uniformTypeDescriptor.TypeDescriptor {if (!fileExtention) {throw new Error("File extension cannot be empty.");}const dataType = uniformTypeDescriptor.getUniformDataTypeByFilenameExtension(`.${fileExtention}`);return uniformTypeDescriptor.getTypeDescriptor(dataType);}/*** 根据文件后缀名获取文件 MIME 类型。* @param fileExtention 文件后缀名,例如:html txt doc ts mp3* @returns string*/static getMimeType(fileExtention: string): string {if (!fileExtention) {throw new Error("File extension cannot be empty.");}const typeDescriptor = PreviewUtil.getTypeDescriptor(fileExtention);return typeDescriptor.mimeTypes && typeDescriptor.mimeTypes.length > 0 ? typeDescriptor.mimeTypes[0] : '*/*';}/*** 根据文件后缀名获取对应文件类型的图标。* @param fileExtention 文件后缀名,例如:html txt doc ts mp3* @returns string*/static getIconFileStr(fileExtention: string): string {if (!fileExtention) {throw new Error("File extension cannot be empty.");}const descriptor = PreviewUtil.getTypeDescriptor(fileExtention);return descriptor.iconFile;}/*** 判断当前设备是否支持文件预览能力。* @returns boolean*/static canIUsePreview(): boolean {return canIUse("SystemCapability.Filemanagement.FilePreview.Core");}
}
代码如下:
import { uniformTypeDescriptor } from '@kit.ArkData';
import { filePreview } from '@kit.PreviewKit';
import { FileUtil } from './FileUtil';
import { AppUtil } from './AppUtil';
import { WantUtil } from './WantUtil';/*** 文件预览工具类* 提供文件预览、加载、判断等功能。* author: CSDN-鸿蒙布道师* since: 2025/04/16*/
export class PreviewUtil {/*** 通过传入文件预览信息,打开预览窗口。1秒内重复调用无效。* @param previewInfo 文件的预览信息* @returns Promise<void>*/static openPreview(previewInfo: filePreview.PreviewInfo): Promise<void> {if (!previewInfo) {throw new Error("PreviewInfo cannot be empty.");}return filePreview.openPreview(AppUtil.getContext(), previewInfo);}/*** 通过传入文件的 URI,打开预览窗口。1秒内重复调用无效。* @param uri 文件的 URI* @returns Promise<void>*/static async openPreviewEasy(uri: string): Promise<void> {if (!uri) {throw new Error("URI cannot be empty.");}const previewInfo = PreviewUtil.generatePreviewInfo(uri);return filePreview.openPreview(AppUtil.getContext(), previewInfo);}/*** 根据文件的 URI 判断文件是否可预览。* @param uri 文件的 URI* @returns Promise<boolean>*/static canPreview(uri: string): Promise<boolean> {if (!uri) {throw new Error("URI cannot be empty.");}return filePreview.canPreview(AppUtil.getContext(), uri);}/*** 判断预览窗口是否已经存在。* @returns Promise<boolean>*/static hasDisplayed(): Promise<boolean> {return filePreview.hasDisplayed(AppUtil.getContext());}/*** 关闭预览窗口,仅当预览窗口存在时起效。*/static closePreview(): void {filePreview.closePreview(AppUtil.getContext());}/*** 加载预览文件信息。仅当预览窗口存在时起效。* @param previewInfo 文件的预览信息* @returns Promise<void>*/static loadData(previewInfo: filePreview.PreviewInfo): Promise<void> {if (!previewInfo) {throw new Error("PreviewInfo cannot be empty.");}return filePreview.loadData(AppUtil.getContext(), previewInfo);}/*** 加载预览文件信息。仅当预览窗口存在时起效。* @param uri 文件的 URI* @returns Promise<void>*/static async loadDataEasy(uri: string): Promise<void> {if (!uri) {throw new Error("URI cannot be empty.");}const previewInfo = PreviewUtil.generatePreviewInfo(uri);return filePreview.loadData(AppUtil.getContext(), previewInfo);}/*** 调用其他应用预览文件。* @param uri 文件的 URI* @param write 是否有写入权限,默认为 true* @returns Promise<void>*/static onSharePreview(uri: string, write: boolean = true): Promise<void> {if (!uri) {throw new Error("URI cannot be empty.");}return WantUtil.openFile(uri, write);}/*** 根据文件 URI 构建 PreviewInfo。* @param uri 文件的 URI* @returns filePreview.PreviewInfo*/static generatePreviewInfo(uri: string): filePreview.PreviewInfo {if (!uri) {throw new Error("URI cannot be empty.");}const fileName = FileUtil.getFileName(uri);const fileExtention = FileUtil.getFileExtention(fileName);const mimeType = PreviewUtil.getMimeType(fileExtention);return {title: fileName,uri: uri,mimeType: mimeType,};}/*** 根据文件后缀名获取 TypeDescriptor(标准化数据类型的描述类)。* @param fileExtention 文件后缀名,例如:html txt doc ts mp3* @returns uniformTypeDescriptor.TypeDescriptor*/static getTypeDescriptor(fileExtention: string): uniformTypeDescriptor.TypeDescriptor {if (!fileExtention) {throw new Error("File extension cannot be empty.");}const dataType = uniformTypeDescriptor.getUniformDataTypeByFilenameExtension(`.${fileExtention}`);return uniformTypeDescriptor.getTypeDescriptor(dataType);}/*** 根据文件后缀名获取文件 MIME 类型。* @param fileExtention 文件后缀名,例如:html txt doc ts mp3* @returns string*/static getMimeType(fileExtention: string): string {if (!fileExtention) {throw new Error("File extension cannot be empty.");}const typeDescriptor = PreviewUtil.getTypeDescriptor(fileExtention);return typeDescriptor.mimeTypes && typeDescriptor.mimeTypes.length > 0 ? typeDescriptor.mimeTypes[0] : '*/*';}/*** 根据文件后缀名获取对应文件类型的图标。* @param fileExtention 文件后缀名,例如:html txt doc ts mp3* @returns string*/static getIconFileStr(fileExtention: string): string {if (!fileExtention) {throw new Error("File extension cannot be empty.");}const descriptor = PreviewUtil.getTypeDescriptor(fileExtention);return descriptor.iconFile;}/*** 判断当前设备是否支持文件预览能力。* @returns boolean*/static canIUsePreview(): boolean {return canIUse("SystemCapability.Filemanagement.FilePreview.Core");}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com