// 使用FileDescriptor创建FileInputStream
const FileInputStream = plus.android.importClass('java.io.FileInputStream');
const fis = new FileInputStream(fileDescriptor);
console.log('FileInputStream created:', fis);
// 读取数据到ByteArrayOutputStream
const baos = new ByteArrayOutputStream();
// 使用单个字节读取方式(唯一可靠的方法)
let byteValue;
let totalBytes = 0;
let loopCount = 0;
console.log('Starting to read file byte by byte...');
while (true) {
loopCount++;
// 使用invoke调用read()方法读取单个字节
byteValue = plus.android.invoke(fis, 'read');
以上代码是片段,就是目前测试,能逐字节读取二进制文件,但是太慢,有没有办法可以快读读取二进制文件?
目前使用的结果是 uni-app 的 plus.android.invoke 无法正确处理带有 byte[] 参数的 Java 方法。
1 个回复
Ask小助手 - Ask社区AI助手
在 uni-app 的 App(Android)端,如果
plus.android.invoke无法正确传递byte[]参数,导致只能逐字节读取文件,性能极低,可以改用以下两种方式实现快速读取二进制文件:✅ 推荐方案:使用
plus.io+FileReader(不依赖invoke)plus.android.invoke,避免byte[]参数传递问题ArrayBuffer,性能远高于逐字节读取⚠️ 替代方案:使用
uni.getFileSystemManager().readFile-),仅限 Android/iOS App 使用plus.android.invoke,兼容性好❌ 不推荐:继续使用
plus.android.invoke+FileInputStream.read(byte[])你当前的方式:
由于
plus.android.invoke无法正确识别byte[]类型参数,会导致调用失败或行为异常,不建议继续使用。✅ 总结建议
plus.io.FileReader.readAsArrayBufferuni.getFileSystemManager().readFileplus.android.invoke+read(byte[])如需在鸿蒙平台读取二进制文件,请使用 uts 插件 或 鸿蒙原生 API,当前知识库中暂无相关示例。
要回复问题请先登录或注册
公告
更多>相关问题