鸿蒙文件预览

75 阅读1分钟
import { filePreview } from '@kit.PreviewKit';
import { promptAction } from '@kit.ArkUI';
import { fileIo as fs, fileUri } from '@kit.CoreFileKit';

@Entry
@Component
struct Index {
  private fileName: string = 'preview_info.txt';

  build() {
    Row() {
      Column() {
        Button('openPreview')
          .onClick(async() => {
            let context = getContext(this);
            let fileDir = context.filesDir;     // 获取沙箱路径
            let filePath = fileDir + '/' + this.fileName;
            let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);  // 创建文件
            let uri = fileUri.getUriFromPath(filePath);   // 获取uri
            let str: string = "欢迎使用文件预览\n" +
              "文件预览通常用于各种类型的文件,包括文本文档、图像、音频和视频文件。\n" +
              "文件预览可以帮助用户快速查看文件内容。";
            let writeLen = fs.writeSync(file.fd, str);   // 写入文件
            console.info("write data to file succeed and size is:" + writeLen);
            fs.closeSync(file);
            let result = await filePreview.canPreview(context, uri);  // 传入uri,判断是否可预览
            if (result) {
              let previewInfo: filePreview.PreviewInfo = {
                title: this.fileName,
                uri: uri,
                mimeType: 'text/plain'
              }
              filePreview.openPreview(getContext(this), previewInfo);  // 打开预览
            } else {
              promptAction.showToast({   // 不可预览
                message: '文件不可预览'
              });
            }
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

image.png