鸿蒙NEXT版实战开发:如何选择文件保存路径?

往期鸿蒙全套实战文章必看:(附带鸿蒙全栈学习资料)


如何选择文件保存路径

官网中保存用户文件提供的方法是要FilePicker需要拉起系统应用,再由用户选择具体路径保存文件的。

但是如果是保存文件到媒体库的场景,可以使用保存控件SaveButton,示例如下

import { photoAccessHelper } from '@kit.MediaLibraryKit'; 
import { fileIo } from '@kit.CoreFileKit'; 
 
@Entry 
@Component 
struct WebComponent { 
  build() { 
    Row() { 
      Column() { 
        Image($r('app.media.startIcon')) 
          .height(200) 
          .width(200) 
        SaveButton().onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) => { 
          if (result === SaveButtonOnClickResult.SUCCESS) { 
            try { 
              const context = getContext(this); 
              let helper = photoAccessHelper.getPhotoAccessHelper(context); 
              // onClick触发后5秒内通过createAsset接口创建图片文件,5秒后createAsset权限收回。 
              let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpg'); 
              // 使用uri打开文件,可以持续写入内容,写入过程不受时间限制 
              let file = await fileIo.open(uri, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE); 
              try { 
                context.resourceManager.getMediaContent($r('app.media.startIcon').id, 0) 
                  .then(async value => { 
                    let media = value.buffer; 
                    // 写到媒体库文件中 
                    await fileIo.write(file.fd, media); 
                    await fileIo.close(file.fd); 
                    AlertDialog.show({ message: '已保存至相册!' }); 
                  }); 
              } catch (err) { 
                console.error('error is ' + JSON.stringify(err)) 
              } 
            } catch (error) { 
              console.error('error is ' + JSON.stringify(error)); 
            } 
          } else { 
            AlertDialog.show({ message: '设置权限失败' }) 
          } 
        }) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值