美文网首页鸿蒙
关于鸿蒙的文件读写讲解--崩溃边缘挣扎

关于鸿蒙的文件读写讲解--崩溃边缘挣扎

作者: 林下人水边兵 | 来源:发表于2023-03-24 13:35 被阅读0次

实现的主要功能是 通过log写入本地 将日志上传到服务器 这个功能

我还是要吐槽一下 鸿蒙的api 对开发者贼不友好。不同版本的api的差异真的有点大

目前的鸿蒙在开发资料也不多,不像android那样,随处都有。全靠官方提供的开发文档

由于鸿蒙3.1(api9)版本 还处于beta阶段 对测试机也只有高端机两部手机可以用
项目直接切到api8(主要是穷)

1.获取app的 cache路径

华为手机管理文件 我是看不到这个文件,估计是权限问题,这里是用了 androidstudio 编辑器 来看(后面调试可以观察到文本数据的变化--test.txt)

image.png
image.png

相关代码块

async function writeLogToFile(log) {
  var context = featureAbility.getContext();
  context.getCacheDir((err, data) => {
    console.info("getCacheDir err: " + JSON.stringify(err) + "data: " + JSON.stringify(data));
    let path = data + "/test.txt"
    //文件操作
    write(log, path)
  });
}

2.对文件进行读写

这里由于不同版本提供的api差异区别,看文档需要注意。目前我是以鸿蒙3.0(api8)的来写,这里也是最痛苦的,有的api也不维护了,大家自己感受

看了开发文档,提供的FileIO的操作还是很多,需要根据自己业务需求使用适当api. 这里我是使用了它提供的 fileio.createStream7+ 来实现,这里不展开了,具体看文档

参考文档地址

相关代码块

async function write(log, path) {
  await fileio.createStream(path, "a+").then(function (stream) {
    console.info("createStream succeed");
    stream.writeSync(log + "\n")
    stream.flushSync()
    stream.close()
  }).catch(function (err) {
    console.info("createStream failed with error:" + err);
  });
}

3.完整代码如下

import fileio from '@ohos.fileio';
import hilog from '@ohos.hilog';
import prompt from '@ohos.prompt';
import featureAbility from '@ohos.ability.featureAbility';
import app from '@system.app';
import writeFileSync from '@system.file';

@Entry
@Component
struct Index {
  @State message: string = 'Hello World'

  build() {
    Row() {
      Column() {
        Button(this.message)
          .fontSize(50)
          .onClick(() => {
            for (let index = 0; index < 1000; index++) {
              writeLogToFile("test" + index)
              if (index == 999) {
                prompt.showToast({ message: "结束" })
              }

            }

          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

async function writeLogToFile(log) {
  var context = featureAbility.getContext();
  context.getCacheDir((err, data) => {
    console.info("getCacheDir err: " + JSON.stringify(err) + "data: " + JSON.stringify(data));
    let path = data + "/test.txt"
    //文件操作
    write(log, path)
  });
}

async function write(log, path) {
  await fileio.createStream(path, "a+").then(function (stream) {
    console.info("createStream succeed");
    stream.writeSync(log + "\n")
    stream.flushSync()
    stream.close()
  }).catch(function (err) {
    console.info("createStream failed with error:" + err);
  });
}

运行后的效果

多次测试,异步写入 每次数据都是1000条整,没有问题


image.png

相关文章

  • 一个人面对孩子的全部,

    有时真就崩溃的边缘挣扎

  • 2019-12-21

    我不过是在崩溃的边缘挣扎着,压死我的最后会是哪根稻草,

  • 当挣扎在心态崩溃边缘

    很烦躁。 极其烦躁。 烦躁的顶端。 以下这些都有可能使我烦躁的罪魁祸首! 或许是姨妈快要来了、也或许因为下巴上蹦出...

  • Pandas之:Pandas高级教程以铁达尼号真实数据为例

    简介 今天我们会讲解一下Pandas的高级教程,包括读写文件、选取子集和图形表示等。 读写文件 数据处理的一个关键...

  • Python的文件操作

    爬虫以后我们需要把数据存储到文件中去,本章主要讲解如何打开文件和读写文件。 Python打开文件 Python内置...

  • 京东裁员降薪后,一员工“抑郁症”自杀,人事地震人人自危

    1 生活,真的可以难死人 生活中,你有多少次在崩溃边缘挣扎,又有多少次明明已经崩溃了却还装作“我很好”的样子。 大...

  • 边缘挣扎

    时常梦里有一个影子, 她总是会在我的梦里挣扎反抗, 甚至不停的在抽泣, 我能亲切的感受到梦中她难以呼吸说不出话的样...

  • 第三篇:戏说C++文件I/O (后篇)

    文件流读写完整案例 下面是一个关于文件流读写入的实际示例 首先,我们定义了Employee的类,关于这个类我们的a...

  • 边缘的挣扎

    第一次听《我不是药神》,是从舍友口中听到对它的评价。她说是个还不错的影片,强力推荐,所以迫不及待的开始了观看之旅。...

  • 挣扎的边缘

    风呼呼的刮着,震得窗户上一些物件发出细微的声响。从关不严的缝隙里透出丝丝凉意。罗芬伸手又拉了拉窗户,似乎想用力把它...

网友评论

    本文标题:关于鸿蒙的文件读写讲解--崩溃边缘挣扎

    本文链接:https://www.haomeiwen.com/subject/eonwrdtx.html