HarmonyOS 鸿蒙Next中本地文件如何转为byte数组
HarmonyOS 鸿蒙Next中本地文件如何转为byte数组 获取到本地文件的路径后如何转为byte数组
3 回复
-
参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-file-access-V5# 以流的形式读写文件
-
拿到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数组可以通过File
和InputStream
类来实现。首先,使用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数组可以通过以下步骤实现:
- 使用
ohos.file.fs
模块的File
类打开文件。 - 使用
File
对象的read
方法将文件内容读取到ArrayBuffer
中。 - 将
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);