第21节 arkts 如何读取普通文件

ArkTS 中读取普通文件可以通过以下几种方式:

使用@ohos.fileio 模块

@ohos.fileio 模块提供了一系列用于文件操作的接口,可以用于读取普通文件。以下是一个简单的示例,展示如何读取一个文本文件的内容:
import fileio from '@ohos.fileio';
@Entry
@Component
struct FileReadExample {
async build() {
let fileContent: string = '';
try {
// 打开文件,这里以读取文本文件为例,使用 'utf-8' 编码
let fileDescriptor = await fileio.open('/path/to/your/file.txt', 'r',
0o666, 'utf-8');
if (fileDescriptor) {
// 读取文件内容
let readResult = await fileio.read(fileDescriptor, 1024);
if (readResult) {
fileContent = readResult.result.toString();
}
// 关闭文件
fileio.close(fileDescriptor);
}
} catch (error) {
console.error('Error reading file: ', error);
}
return Text(fileContent).fontSize(16);
}
}
在上述示例中:
1. 首先通过 fileio.open 函数打开指定路径的文件,指定了读取模式 r 和文件权限 0o666 ,以及编 码格式 utf - 8
2. 然后使用 fileio.read 函数读取文件内容,将读取结果转换为字符串并存储在 fileContent 变量中。
3. 最后关闭文件,并将文件内容显示在一个 Text 组件中。

使用@ohos.fs 模块

@ohos.fs 模块也提供了一些文件系统相关的操作接口,可以用于读取文件。以下是一个类似的读取文件示例:
import fs from '@ohos.fs';
@Entry
@Component
struct FileReadWithFsExample {
async build() {
let fileContent: string = '';
try {
// 读取文件内容为字节数组
let data = await fs.readFileSync('/path/to/your/file.txt');
if (data) {
fileContent = new TextDecoder('utf-8').decode(data);
}
} catch (error) {
console.error('Error reading file: ', error);
}
return Text(fileContent).fontSize(16);
}
}
在这个示例中:
  1. 使用 fs.readFileSync 函数同步读取文件内容,得到一个字节数组。
  2. 通过 TextDecoder 将字节数组转换为字符串,并赋值给 fileContent 变量。
  3. 最后将文件内容显示在 Text 组件中。

注意事项

  • 文件路径:确保提供的文件路径是正确的,并且应用具有相应的权限来读取该文件。在HarmonyOS 中,不同的应用可能具有不同的文件访问权限限制。
  • 异步操作:文件读取操作通常是异步的,因此在示例中使用了 async await 来处理异步操作,以确保在文件读取完成后再进行后续的处理。
  • 错误处理:在实际应用中,需要对文件读取过程中可能出现的错误进行适当的处理,如文件不存在、权限不足等情况,以提供更好的用户体验和应用稳定性。
以上就是在 ArkTS 中读取普通文件的常见方法和相关注意事项。根据具体的应用场景和需求,可以选择合适的文件读取方式来处理文件操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/59004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统程序设计--2. 文件I/O

文件I/O 标准C的I/O FILE结构体 下面只列出了5个成员 可以观察到,有些函数没有FILE类型的结构体指针例如printf主要是一些标准输出,因为其内部用到了stdin,stdout,stderr查找文件所在的位置:find \ -name stat.h查找头文件所…

OpenSSL 生成根证书、中间证书和网站证书

OpenSSL 生成根证书、中间证书和网站证书 一、生成根证书(ChinaRootCA)二、生成中间 CA(GuangDongCA)三、生成网站证书(gdzwfw) 一、生成根证书(ChinaRootCA) 创建私钥: …

【ShuQiHere】️ 深入了解 ADB(Android Debug Bridge):您的 Android 开发利器!

📟🔧【ShuQiHere】️ 🔧📟 在 Android 应用开发和设备管理中,ADB(Android Debug Bridge) 是一个不可或缺的工具。无论您是开发者、技术爱好者,还是普通用户,掌握 ADB 的…

HarmonyOS Next 实战卡片开发 02

HarmonyOS Next 实战卡片开发 02 卡片开发中,还有一个难点是显示图片。其中分为显示本地图片和显示网络图片 显示本地图片 卡片可以显示本地图片,如存放在应用临时目录下的图片。路径比如 /data/app/el2/100/base/你的项目boundleName/temp/123.png 以…

Linux之文件和目录类命令详解(2)

Linux之文件和目录类命令详解(2) 1、mv-移动文件或重命名2、find-查找文件和目录3、locate-快速查找文件4、du-显示目录或文件的磁盘使用情况5、df-显示文件系统的磁盘空间使用情况6、chmod-更改文件或目录的权限7、chown-更改文件或目录的拥有者8、tree…

【SpringMVC】记录一次Bug——mvc:resources设置静态资源不过滤导致WEB-INF下的资源无法访问

SpringMVC 记录一次bug 其实都是小毛病,但是为了以后再出毛病,记录一下: mvc:resources设置静态资源不过滤问题 SpringMVC中配置的核心Servlet——DispatcherServlet,为了可以拦截到所有的请求(JSP页面除外&#xf…

MySQL 程序设计课程复习大纲

作为一门基础的 MySQL 程序设计课程,期末复习的重点应放在常见的数据库操作、基本查询、数据建模、关系型数据库的规范化设计等方面。以下是针对基础课程的 MySQL 期末复习知识点。 1. MySQL 基础概念与数据库操作 数据库基础 数据库与表的概念数据库管理系统&…

【C++ 算法进阶】算法提升十一 十二

目录标题 让字符串成为回文串的最少插入次数题目题目分析代码题目题目 字符子串 (滑动窗口)题目题目分析代码 最长连续子序列 (头尾表)题目题目分析代码 让字符串成为回文串的最少插入次数 题目 本题为为LC原题 题目如下 题目分…

让redis一直开启服务/自动启动

文章目录 你的redis是怎么打开的黑窗不能关?必须要自动启动吗?再说说mysql 本文的所有指令都建议在管理员权限下打开cmd控制台 推荐的以管理员身份打开控制台的方式 Win R 打开运行 输入cmdShift Ctrl Enter 你的redis是怎么打开的 安装过redis的朋友都知道, redis的安…

国产linux系统(银河麒麟,统信uos)使用 PageOffice 实现word文件在线留痕

PageOffice 国产版 :支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)、龙芯(LoogArch)芯片架构。 查看本示例演示效果 …

域名邮箱推荐:安全与稳定的邮件域名邮箱!

域名邮箱推荐及绑定攻略?最好用的域名邮箱服务推荐? 域名邮箱,作为一种个性化且专业的电子邮件服务,越来越受到企业和个人的青睐。烽火将详细介绍域名邮箱登录的全过程,从注册到登录,帮助您轻松掌握这一重…

AI教育革命:个性化学习的新篇章

内容概要 在 教育 领域,人工智能 的崭露头角带来了前所未有的变化。如今,个性化学习 已不再是一个遥不可及的梦想,而是通过 AI 技术真正实现的可能。借助先进的数据分析能力,教师可以实时跟踪和评估每位学生的学习进度&#xff0…

[2024最新] macOS 发起 Bilibili 直播(不使用 OBS)

文章目录 1、B站账号 主播认证2、开启直播3、直播设置添加素材、隐私设置指定窗口添加/删除 窗口 4、其它说明官方直播帮助中心直播工具教程 目前搜到的 macOS 直播教程都比较古早,大部分都使用 OBS,一番探索下来,发现目前已经不需要 OBS了&a…

刷题---轮转数组

本题来自力扣刷题:轮转数组 首先我们来看一下题目描述 解题思路:首先创建一个新的数组,将后面k个数据数据放到新数组前面,将size-1个数据放在剩下的空间中,再把新数组的数据赋值给nums。看下图更好理解 代码展示 vo…

默认 iOS 设置使已锁定的 iPhone 容易受到攻击

苹果威胁研究的八个要点 苹果手机间谍软件问题日益严重 了解 Apple 苹果的设备和服务器基础模型发布 尽管人们普遍认为锁定的 iPhone 是安全的,但 iOS 中的默认设置可能会让用户面临严重的隐私和安全风险。 安全研究员 Lambros 通过Pen Test Partners透露&#…

vue3的Composition API(hooks)

1. setup函数 setup是一个新的组件选项,作为组件中使用组合API的起点。 从组件生命周期来看,它的执行在组件实例创建之前vue2.x的beforeCreate执行。 这就意味着在setup函数中this 还不是组件实例,this此时是undefined 在模版中需要使用的…

React Native WebView 进阶:实现带回调函数的通讯

实现带回调的通讯 Web 端实现 在网页中&#xff0c;我们使用 window.callbacks 对象来注册回调函数&#xff0c;并将 callbackId 传递给 App&#xff1a; <script>window.callbacks {callbacks: {},register: function(successCallback, errorCallback) {const callb…

常用的c++特性-->day02

c11新特性 可调用对象案例分析 可调用对象包装器语法案例可调用对象包装器作为函数参数补充&#xff1a;类型转换运算符案例 可调用对象绑定器语法格式绑定非类成员函数/变量案例1案例2案例3案例4 绑定类成员函数/变量 lambda表达式捕获列表案例1返回值案例2 --> 包装器绑定…

Linux进程信号(信号的产生)

目录 什么是信号&#xff1f; 信号的产生 信号产生方式1&#xff1a;键盘 前台进程 后台进程 查看信号 signal系统调用 案例 理解进程记录信号 软件层面 硬件层面 信号产生方式2:指令 信号产生方式3:系统调用 kill系统调用 案例 其他产生信号的函数调用 1.rais…

国产化浪潮下,高科技企业如何选择合适的国产ftp软件方案?

高科技企业在数字化转型和创新发展中&#xff0c;数据资产扮演着越来越重要的角色。在研发过程中产生的实验数据、设计文档、测试结果等&#xff0c;专利、商标、版权之类的创新成果等&#xff0c;随着信息量急剧增加和安全威胁的复杂化&#xff0c;传统的FTP软件已经不能满足这…