HarmonyOS鸿蒙Next中一直无法读取本地文件,一直显示文件不存在?你们可知小白的苦
HarmonyOS鸿蒙Next中一直无法读取本地文件,一直显示文件不存在?你们可知小白的苦
我左边rawfile里面那么多文件,为什么一直说找不到文件。难道官方给的示例代码,没有给全?下面是鸿蒙官方的代码啊。我后面加了组件便于显示。
import fs from '@ohos.file.fs';
import common from '@ohos.app.ability.common';
@Entry
@Component
struct xx {
build() {Column(){
Button('dddddddd').onClick(()=>{
let context = getContext(this) as common.UIAbilityContext;// 获取应用文件路径
let filesDir = context.filesDir;
let options = { recursion: false, listNum: 0, // 查看文件列表
filter: { suffix: ['.png', '.jpg', '.txt'], // 匹配文件后缀名为'.png','.jpg','.txt'
displayName: ['test*'], // 匹配文件全名以'test'开头
fileSizeOver: 0, // 匹配文件大小大于等于0
lastModifiedAfter: new Date(0).getTime(),}, } // 匹配文件最近修改时间在1970年1月1日之后
let files = fs.listFileSync(filesDir, options);
for (let i = 0; i < files.length; i++) { console.info(`The name of file: ${files[i]}`);}
console.log(`The name of ${files[0]}`)
})
}
}
}
rawfile 文件是另外的读取方法。你这样读取是读取应用沙箱里面的文件。
try {
this.context.resourceManager.getRawFd("test.xml").then(value => {
let fd = value.fd;
let offset = value.offset;
let length = value.length;
}).catch(error => {
console.log(`promise getRawFd error error code: ${error.code}, message: ${error.message}.`);
});
} catch (error) {
console.error(`promise getRawFd failed, error code: ${error.code}, message: ${error.message}.`);
};
更多关于HarmonyOS鸿蒙Next中一直无法读取本地文件,一直显示文件不存在?你们可知小白的苦的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
@旺旺崔冰冰,谢谢啊,能显示具体某个文件的内容了。但
我是想显示rawfile文件夹下的所有文件名,按照官方给的代码,不好使啊。还没有vb里面命令好使,里面一个dir(’*’)就可以解决了。没想到鸿蒙命令这么复杂反锁。
前辈们帮忙一下吧。
大神们,谁能帮帮我?
确实读个本地文件各种费劲。折磨人,这鸿蒙开发为啥不把这些常用操作封装好,iOS开发中很容易办到的事在这尽来回折腾不明白,唉想放弃。
您好,可以使用如下方式调用
getContext(this).resourceManager.getRawFileContent("area.json", (error: BusinessError, value: Uint8Array) => {
if (error != null) {
ToastUtil.showToast(`获取区域数据出错, 错误编码: ${error.code}, 原因: ${error.message}.`);
} else {
//转码
let textCoder = util.TextDecoder.create('utf-8', { ignoreBOM: true });
let vStr = textCoder.decodeWithStream(value, { stream: false });
}
});
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17
我替换了代码,如图,context 没有定义怎么办?
在HarmonyOS鸿蒙Next中,无法读取本地文件并显示文件不存在的问题,可能由以下原因导致:
-
文件路径错误:确保文件路径正确,包括文件名和扩展名。鸿蒙系统对路径大小写敏感,需确保路径与文件系统一致。
-
权限问题:检查应用是否具备读取本地文件的权限。在
config.json
中,确保已声明ohos.permission.READ_USER_STORAGE
权限,并在运行时动态申请。 -
文件系统访问限制:鸿蒙系统对文件系统访问有严格限制,确保文件位于应用可访问的目录,如内部存储的
/data/data/<package_name>/
或外部存储的/storage/emulated/0/
。 -
文件未正确创建或已删除:确认文件已正确创建且未被删除。可通过文件管理器检查文件是否存在。
-
应用沙盒机制:鸿蒙系统采用应用沙盒机制,应用只能访问自身沙盒内的文件。确保文件位于应用沙盒内,或通过
FilePicker
等系统组件访问外部文件。 -
系统版本兼容性:某些系统版本可能存在文件读取问题,确保系统和应用均为最新版本。
-
文件编码问题:文件编码不匹配可能导致读取失败,确保文件编码与读取代码一致。
-
文件锁定或占用:文件被其他进程锁定或占用时无法读取,确保文件未被其他应用占用。
-
存储设备状态:外部存储设备未挂载或损坏可能导致读取失败,确保存储设备状态正常。
-
日志排查:通过
HiLog
查看详细错误日志,定位具体问题。
以上是可能导致鸿蒙Next无法读取本地文件的原因,需逐一排查。
在HarmonyOS鸿蒙Next中无法读取本地文件并显示文件不存在,可能是以下原因:
- 文件路径错误,请检查路径是否正确;
- 文件权限未开启,确保应用有读取文件的权限;
- 文件被移动或删除,确认文件是否仍在原位置。
建议使用绝对路径,并在代码中添加异常处理,以便更好地定位问题。