// 这里使用getRawFileContent的方式读取测试文本,并将文本内容打印出来 async loadFromRawFile(context: Context, rawFileName: string): void { let rawFileRes: Uint8Array = await context.resourceManager.getRawFileContent(rawFileName); let bufferLike: ArrayBufferLike = rawFileRes.buffer; let rawFileBuffer: ArrayBuffer = bufferLike.slice(0, bufferLike.byteLength); log.info('loadFromRawFile: ' + rawFileBuffer.byteLength); const decoder = util.TextDecoder.create('"utf-8"'); const str = decoder.decodeWithStream(new Uint8Array(rawFileBuffer)); log.info('loadFromRawFile ' + str); }loadRawFd(context: Context, rawFileName: string) { context.resourceManager.getRawFd(rawFileName, (err: BusinessError, value: resourceManager.RawFileDescriptor) => { let fd = value.fd; let offset = value.offset; let fdLength = value.length; log.info('fd: ' + value.fd + ', offset: ' + offset + ', length: ' + fdLength); let stream: fs.Stream = fs.fdopenStreamSync(fd, 'r'); let stringBuffer = new ArrayBuffer(128); // 每次默认只装128个长度 let currentLength = 0; // 当前已读取长度 let readLength = 128; // 每次读取长度,默认128的长度 while (currentLength < fdLength) { readLength = (fdLength - currentLength > 128) ? 128 : (fdLength - currentLength) stringBuffer = new ArrayBuffer(readLength); stream.readSync(stringBuffer, { offset: offset + currentLength, length: readLength }); let decoder = util.TextDecoder.create('"utf-8"'); let str = decoder.decodeWithStream(new Uint8Array(stringBuffer)); log.info(str); // 解析成字符串并打印出日志 currentLength += readLength; // 读取起始点 } context.resourceManager.closeRawFdSync(rawFileName); // 文件读取完后,需要使用该接口将FD关掉 // fs.closeSync(fd); // 不使用该API,已给研发提诉求优化指导。 stream.closeSync(); }) }