HarmonyOS鸿蒙Next中打开手机文件的txt,怎么获取他的数据?
HarmonyOS鸿蒙Next中打开手机文件的txt,怎么获取他的数据? 打开文件是不是也要拷贝到沙箱,然后才能打开?
3 回复
开发者你好,打开文件无需再次拷贝沙箱中,可以通过picker.DocumentSelectOptions获取选择文件的uri,通过fs.readSync读取里面的内容
参考示例:
private async PullDocPicker(): Promise<string> {
return new Promise((resolve, reject) => {
try {
let documentSelectOptions = new picker.DocumentSelectOptions();
// 限制只能选择TXT文件
documentSelectOptions.fileSuffixFilters = ['.txt'];
// 设置默认文件路径(可选)
documentSelectOptions.defaultFilePathUri = 'file://docs/storage/Users/currentUser/Download/';
const documentPicker = new picker.DocumentViewPicker();
documentPicker.select(documentSelectOptions).then((documentSelectResult: Array<string>) => {
if (documentSelectResult.length === 0) {
resolve(''); // 未选择文件
return;
}
let uri = documentSelectResult[0];
console.info('选择的文件URI:' + uri);
// 打开文件
let file = fs.openSync(uri, fs.OpenMode.READ_ONLY);
// 创建缓冲区(1024字节)
let arrayBuffer = new ArrayBuffer(1024);
let readLen = fs.readSync(file.fd, arrayBuffer, { offset: 0, length: arrayBuffer.byteLength });
let buf = buffer.from(arrayBuffer, 0, readLen);
// 转换为字符串并关闭文件
let content = buf.toString('utf-8');
fs.closeSync(file.fd);
console.info('文件内容:' + content);
resolve(content); // 返回文件内容
}).catch((err: BusinessError) => {
console.error('选择文件失败:', err);
reject(err); // 拒绝Promise,传递错误信息
});
} catch (error) {
console.error('文件选择器初始化失败:', error);
reject(error); // 拒绝Promise,传递错误信息
}
});
}
更多关于HarmonyOS鸿蒙Next中打开手机文件的txt,怎么获取他的数据?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中,使用@ohos.file.fs
模块的fs.openSync
和fs.readSync
方法打开并读取txt文件数据。首先通过getContext
获取应用上下文,使用abilityContext.filesDir
获取沙箱路径。若文件位于rawfile
目录,使用ResourceManager
获取路径。调用fs.openSync
以只读模式打开文件,再通过fs.readSync
读取内容到缓冲区,最后转换为字符串。读取完成后,使用fs.closeSync
关闭文件。