HarmonyOS 鸿蒙Next中本地文件如何转为byte数组

HarmonyOS 鸿蒙Next中本地文件如何转为byte数组 获取到本地文件的路径后如何转为byte数组

3 回复
  1. 参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-file-access-V5# 以流的形式读写文件

  2. 拿到ArrayBuffer后,参考Arraybuffer转Uint8Array的方法:

let arrayBuffer = new ArrayBuffer(100)
buffer.from(arrayBuffer).fill(1)
let arrayBuffer1 = arrayBuffer.slice(0,5)
buffer.from(arrayBuffer).fill(2)

console.log("treeli:::testBuffer =" + new Uint8Array(arrayBuffer))
console.log("treeli:::testBuffer =" + new Uint8Array(arrayBuffer1))

更多关于HarmonyOS 鸿蒙Next中本地文件如何转为byte数组的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙Next)中,将本地文件转为byte数组可以通过FileInputStream类来实现。首先,使用File类指定要读取的文件路径,然后通过FileInputStream打开文件流。接着,创建一个ByteArrayOutputStream对象,用于将文件内容写入到字节数组中。最后,通过toByteArray方法获取byte数组。

以下是示例代码:

import ohos.global.resource.Resource;
import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;
import ohos.utils.PacMap;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class FileToByteArray {
    public byte[] fileToByteArray(String filePath) {
        File file = new File(filePath);
        byte[] byteArray = null;
        try (FileInputStream fis = new FileInputStream(file);
             ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
            byte[] buffer = new byte[1024];
            int len;
            while ((len = fis.read(buffer)) != -1) {
                bos.write(buffer, 0, len);
            }
            byteArray = bos.toByteArray();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return byteArray;
    }
}

在这个代码中,fileToByteArray方法接收文件路径作为参数,返回该文件对应的byte数组。FileInputStream用于读取文件内容,ByteArrayOutputStream用于将读取的内容转换为byte数组。

在HarmonyOS (鸿蒙Next) 中,将本地文件转为byte数组可以通过以下步骤实现:

  1. 使用ohos.file.fs模块的File类打开文件。
  2. 使用File对象的read方法将文件内容读取到ArrayBuffer中。
  3. ArrayBuffer转换为Uint8Array,即可得到byte数组。

示例代码:

import fs from '@ohos.file.fs';

let filePath = 'path/to/your/file';
let file = fs.openSync(filePath, fs.OpenMode.READ_ONLY);
let arrayBuffer = new ArrayBuffer(fs.statSync(filePath).size);
fs.readSync(file.fd, arrayBuffer);
let byteArray = new Uint8Array(arrayBuffer);
fs.closeSync(file);
回到顶部