plus.io.requestFileSystem( plus.io.PRIVATE_DOC, function(fobject){
// fs.root是根目录操作对象DirectoryEntry
fobject.root.getFile('config.xml',{create:true}, function(fileEntry){
fileEntry.file( function(file){
var fileReader = new plus.io.FileReader();
self.resInfo = JSON.stringify(file);
fileReader.readAsText(file, 'utf-8');
fileReader.onloadend = function(evt) {
self.resInfo = self.resInfo+'--'+JSON.stringify(evt);
}
self.resInfo = self.resInfo+'--'+file.size + '--' + file.name;
} );
});
} );

- 发布:2022-03-14 10:51
- 更新:2022-03-14 10:55
- 阅读:8836
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 10
HBuilderX类型: 正式
HBuilderX版本号: 3.3.11
手机系统: Android
手机系统版本号: Android 11
手机厂商: OPPO
手机机型: 任意
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
用安卓10以上手机, 把代码示例中的 'config.xml' 替换成根目录下的文件, 然后执行该代码段, 无法获取文件
用安卓10以上手机, 把代码示例中的 'config.xml' 替换成根目录下的文件, 然后执行该代码段, 无法获取文件
预期结果:
代码可以执行
代码可以执行
实际结果:
代码可以执行, 但是无法读取文件
代码可以执行, 但是无法读取文件
bug描述:
plus.io.requestFileSystem 使用 改方法 读取安卓10版本以上的手机的文件的时候, 是失败的.
config.xml是根目录下的文件, 而fileEntry.file( function(file)获取到的是 /storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/(很多层) /config.xml .
安卓10之后无权限访问.
安卓10以下 以及 鸿蒙系统可以访问
请看代码

3***@qq.com (作者)
替代解决方案
let pathUrl = '/_doc/db.txt'; //指定文件路径
let environment = plus.android.importClass("android.os.Environment");
var sdRoot = environment.getExternalStorageDirectory(); //文件夹根目录
var File = plus.android.importClass("java.io.File");
var BufferedReader = plus.android.importClass("java.io.BufferedReader");
var FileReader = plus.android.importClass("java.io.FileReader");
var FileWriter = plus.android.importClass("java.io.FileWriter");
let readFr = new File(sdRoot + pathUrl);
let txt = '';
try {
var reader = new BufferedReader(new FileReader(readFr))
// 我的需求是读取多行,所以把每行都读出来存在数组里
let arr = [];
let txt;
while ((txt = reader.readLine()) != null) {
arr.push(txt)
}
// 传入回调处理你的业务
//处理业务逻辑
} catch (e) {
}

FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【非诚勿扰】QQ:543610866
去 文件管理器 看有没有这个文件
2***@qq.com
读取txt文件可以,读取bin文件如何修改呢?
//读取bin文件
function readJsonByFile_bin(fileNamePath) {
// 只能用于安卓 导入java类
const File = plus.android.importClass('java.io.File')
const BufferedInputStream = plus.android.importClass('java.io.BufferedInputStream')
const FileInputStream = plus.android.importClass('java.io.FileInputStream')
const readFile = (fileName) => {
}
读到的都是null。。
2023-06-17 10:01
2***@qq.com
回复 2***@qq.com: 唉,uniapp高版本安卓读取文件完全不行,你这个方法不行的原因是因为js没有和java一样的字节数组,使用 Unit8Array建立的字节数组,FileInputStream的read方法不认,只能建立一个普通数组然后用一个循环调用read()方法,才能读到所有的数据,但是这样子性能太差了,直接无解了
2024-01-29 10:24