用file api清理缓存目录

用file api清理缓存目录

HarmonyOS
2024-05-20 21:58:07
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

清理缓存的功能,可以把自己的一些小图片缓存清理掉

用file api清除缓存目录(可能是文件or文件夹)

核心代码解释

import fs from '@ohos.file.fs'; 
import { BusinessError } from '@ohos.base'; 
import common from '@ohos.app.ability.common'; 
 
@Entry 
@Component 
struct Index { 
  @State message: string = 'Hello World'; 
  createFile(){ 
    let cacheDir = getContext(this).cacheDir 
    // 新建并打开文件 
    let file = fs.openSync(cacheDir + '/test.txt', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); 
    // 写入一段内容至文件 
    let writeLen = fs.writeSync(file.fd, "hello"); 
    console.info("length" + writeLen); 
    // 从文件读取一段内容 
    let buf = new ArrayBuffer(1024); 
    let readLen = fs.readSync(file.fd, buf, { offset: 0 }); 
    // console.info("the content of file: " + String.fromCharCode.apply(null, new Uint8Array(buf.slice(0, readLen)))); 
    // 关闭文件 
    fs.closeSync(file); 
  } 
 
  build() { 
    Row() { 
      Column() { 
        Text(this.message) 
          .fontSize(50) 
          .fontWeight(FontWeight.Bold) 
        Button('1111111') 
          .onClick(()=> { 
            let cacheDir = getContext(this).cacheDir 
            console.info("remove1 "+JSON.stringify(cacheDir)) 
 
            this.createFile(); 
            // let context = getContext(this) as common.UIAbilityContext 
            // let filePath = context.cacheDir; 
            // console.info("remove1 "+JSON.stringify(filePath)) 
            // fs.rmdirSync(cacheDir) 
            // console.log("delete") 
 
            fs.listFile(cacheDir).then((filenames) => { 
              for (let i = 0; i < filenames.length; i++) { 
                // let dirPath = cacheDir+filenames[i] 
                let dirPath = `${cacheDir}/${filenames[i]}` 
                // 判断是否文件夹 
                let isDirectory:boolean = false; 
                try { 
                  isDirectory = fs.statSync(dirPath).isDirectory() 
                } 
                catch (e) { 
                  console.log(e) 
                } 
 
                if (isDirectory) { 
                  fs.rmdirSync(dirPath) 
                } else { 
                  fs.unlink(dirPath).then(() => { 
                    console.info("remove1 file succeed"); 
                  }).catch((err : BusinessError) => { 
                    console.info("remove1 file failed with error message: " + err.message + ", error code: " + err.code); 
                  }); 
                } 
              } 
 
            }) 
          }) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}
分享
微博
QQ
微信
回复
2024-05-22 15:46:19
相关问题
DevEco有没有清理调试应用缓存的功能
2430浏览 • 1回复 待解决
File公有目录是不能不能创建 ?
1681浏览 • 1回复 待解决
如何获取当前应用程序缓存目录
587浏览 • 1回复 待解决
本地缓存和分布式缓存有什么不同?
1310浏览 • 1回复 待解决
鸿蒙NFC API没法怎么回事啊?
1253浏览 • 1回复 待解决
API9下ets开发的APP如何退出 ?
1594浏览 • 1回复 待解决
spark 没有c#的api,那c#怎么spark呢?
1058浏览 • 0回复 待解决
Certpath File(*.cer) 从哪里获取?
6076浏览 • 1回复 待解决
fs.mkdirSync报错:No such file or directory
409浏览 • 1回复 待解决
api version6 是不是只能在虚拟机
5107浏览 • 2回复 已解决