如何以流的形式读写文件

如何以流的形式读写文件

HarmonyOS
2024-08-01 09:49:21
1603浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
小小肉蟹

需要注意使用流接口后,应该及时关闭流。流接口不支持并发读写。以下是一个代码示例。

import { fileIo as fs, ReadOptions } from '@kit.CoreFileKit';
import { common } from '@kit.AbilityKit';

// 获取应用文件路径
let context = getContext(this) as common.UIAbilityContext;
let filesDir = context.filesDir;

async function readWriteFileWithStream(): Promise<void> {
打开文件流
  let inputStream = fs.createStreamSync(filesDir + '/test.txt', 'r+');
  let outputStream = fs.createStreamSync(filesDir + '/destFile.txt', "w+");
以流的形式读取源文件内容并写入目的文件
  let bufSize = 4096;
  let readSize = 0;
  let buf = new ArrayBuffer(bufSize);
  let readOptions: ReadOptions = {
    offset: readSize,
    length: bufSize
  };
  let readLen = await inputStream.read(buf, readOptions);
  readSize += readLen;
  while (readLen > 0) {
    const writeBuf = readLen < bufSize ? buf.slice(0, readLen) : buf;
    await outputStream.write(writeBuf);
    readOptions.offset = readSize;
    readLen = await inputStream.read(buf, readOptions);
    readSize += readLen;
  }
关闭文件流
  inputStream.closeSync();
  outputStream.closeSync();
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
分享
微博
QQ
微信
回复
2024-08-01 18:31:23


相关问题
HarmonyOS web如何以移动端形式
468浏览 • 1回复 待解决
http请求如何以JSON形式进行传输
2845浏览 • 1回复 待解决
http请求如何以表单形式进行传输
3824浏览 • 1回复 待解决
使用ArkTs请求如何以JSON形式传输
1388浏览 • 1回复 待解决
ArkTS中HTTP请求如何以JSON形式进行传输
3842浏览 • 1回复 待解决
如何读写各种途径创建文件
1609浏览 • 1回复 待解决
HarmonyOS 文件读写权限如何获得?
1538浏览 • 1回复 待解决
鸿蒙系统文件读写权限如何设置?
1954浏览 • 0回复 待解决
harmonyos怎么读写文件
12363浏览 • 1回复 已解决
HarmonyOS 文件读写问题
923浏览 • 1回复 待解决
HarmonyOS文件读写相关问题
1719浏览 • 1回复 待解决
HarmonyOS文件读写权限问题
1213浏览 • 1回复 待解决
HarmonyOS 如何读取本地文件
787浏览 • 1回复 待解决
程序怎么读写设备上文件啊?
4992浏览 • 1回复 待解决
HarmonyOS 文件读写在哪找
883浏览 • 1回复 待解决
如何对一个文件进行读写操作
1290浏览 • 1回复 待解决
HarmonyOS native层文件读写权限
836浏览 • 1回复 待解决
HarmonyOS 文件问题
677浏览 • 1回复 待解决