HarmonyOS如何获取“文件管理”App的 Documents 目录的路径

应用下载文件到 cacheDir 目录后,想将下载后的文件转存到“文件管理”App的 Documents 目录中,如何获取这个目录的路径,是否需要请求权限,能给出一个完整转存流程的代码最好。

HarmonyOS
2024-09-09 12:09:45
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

请参考下面的demo:

import fs from '@ohos.file.fs'; 
import { common } from '@kit.AbilityKit'; 
import { picker } from '@kit.CoreFileKit'; 
import { BusinessError } from '@kit.BasicServicesKit'; 
@Entry 
@Component 
struct Index { 
  @State message: string = 'Hello World'; 
  private appContext: common.Context = getContext(this); 
  private fileDir: string = '' 
  createFile(){ 
    let cacheDir = this.appContext.cacheDir; 
    this.fileDir = cacheDir + '/HelloWorld.txt' 
    let file = fs.openSync(this.fileDir, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE) 
    let writeLen = fs.writeSync(file.fd, 'hello world!'); 
    console.info("write data to file succeed and size is:" + writeLen); 
    fs.closeSync(file) 
  } 
  saveFile(){ 
    try { 
      let documentSaveOptions = new picker.DocumentSaveOptions(); 
      documentSaveOptions.newFileNames = ['HelloWorld.txt']; 
      let documentPicker = new picker.DocumentViewPicker(); 
      documentPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) => { 
        let uri = documentSaveResult[0]; 
        let sanFile = fs.openSync(this.fileDir, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE) 
        let pubFile = fs.openSync(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE) 
        fs.copyFileSync(sanFile.fd, pubFile.fd) 
        fs.close(sanFile) 
        fs.close(pubFile) 
        console.info('DocumentViewPicker.save successfully, documentSaveResult uri: ' + JSON.stringify(documentSaveResult)); 
      }).catch((err: BusinessError) => { 
        console.error('DocumentViewPicker.save failed with err: ' + JSON.stringify(err)); 
      }); 
    } catch (error) { 
      let err: BusinessError = error as BusinessError; 
      console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err)); 
    } 
  } 
  build() { 
    Row() { 
      Column() { 
        Button(this.message) 
          .fontSize(50) 
          .fontWeight(FontWeight.Bold) 
          .onClick(()=>{ 
            this.createFile(); 
            this.saveFile(); 
          }) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}
分享
微博
QQ
微信
回复
2024-09-09 15:13:10
相关问题
文件上传本地路径如何获取
422浏览 • 1回复 待解决
怎样获取当前app缓存目录
660浏览 • 2回复 待解决
如何访问resource目录路径
511浏览 • 1回复 待解决
如何获取应用自身文件路径
2073浏览 • 1回复 待解决
如何获取工程目录json文件
876浏览 • 1回复 待解决
如何获取资源文件路径
1914浏览 • 1回复 待解决
鸿蒙如何获取资源文件路径
16494浏览 • 3回复 待解决
Native侧如何获取可操作文件目录
2053浏览 • 1回复 待解决
如何获取文件绝对路径
2185浏览 • 1回复 待解决
如何监听文件文件目录变化
1740浏览 • 1回复 待解决
如何获取profile路径下资源文件
1811浏览 • 1回复 待解决