HarmonyOS鸿蒙Next中请问怎么将.txt文本文件读入,然后构成二维数组?
HarmonyOS鸿蒙Next中请问怎么将.txt文本文件读入,然后构成二维数组? 请问怎么将.txt文本文件读入,然后构成二维数组?
更多关于HarmonyOS鸿蒙Next中请问怎么将.txt文本文件读入,然后构成二维数组?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
可使用resourceManager进行.txt文件的读取;然后创建二维数组进行录入。具体参考一下代码
//Index.ets文件
import { parseTable, readRawFile } from './ResourceUtil';
async function loadData() {
const text = await readRawFile('data.txt');
const table: string[][] = parseTable(text);// 二维数组
console.info(JSON.stringify(table));
// 输出: [["阿@3-1","网@03-1","哎@0+*","良@609"],["唤@0422","@5422","换@8422","电@9816"],["品@891"]]
}
@Entry
@Component
struct Index {
async aboutToAppear() {
// 创建正确的 Configuration 对象
await loadData()
}
build() {
Column() {
Text('Hello')
Button("二维数组")
.onClick(()=>{
loadData()
})
.fontSize(30)
}
}
}
//ResourceUtil.ets文件
import { util } from '@kit.ArkTS';
/** 读取 rawfile 内任意文本文件 */
export async function readRawFile(fileName: string): Promise<string> {
const rm = getContext().resourceManager;
const buf = await rm.getRawFileContent(fileName);// Uint8Array
const decoder = util.TextDecoder.create('utf-8', { ignoreBOM: true });
return decoder.decodeToString(buf, { stream: false });
}
/** 按空白分隔成二维数组,自动跳过空行 */
export function parseTable(content: string, skipLines: number = 0): string[][] {
return content
.split(/\r?\n/) // 按行拆
.slice(skipLines) // 去掉表头
.map(l => l.trim())
.filter(l => l) // 去空行
.map(l => l.split(/\s+/)); // 任意空白当分隔
}
更多关于HarmonyOS鸿蒙Next中请问怎么将.txt文本文件读入,然后构成二维数组?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS Next中读取txt文件并构建二维数组的方法:
使用@ohos.file.fs
模块的readText接口读取文件内容:
import fs from '@ohos.file.fs';
let filePath = 'path/to/your/file.txt';
let content = fs.readTextSync(filePath);
处理文本内容:
let lines = content.split('\n');
let twoDimArray = lines.map(line => line.split(','));
此代码将按行分割文本,再按逗号分割每行数据,生成二维数组。根据实际文件分隔符调整split参数。
在HarmonyOS Next中,可以通过@ohos.file.fs
模块读取文本文件内容,然后根据数据格式(如逗号或空格分隔)解析为二维数组。以下是示例代码:
import fs from '@ohos.file.fs';
// 假设文件路径已知
let filePath = '.../data.txt';
try {
// 读取文件内容
let content = fs.readTextSync(filePath);
// 按行分割
let lines = content.split('\n');
let result = [];
// 逐行解析数据
for (let line of lines) {
if (line.trim() === '') continue; // 跳过空行
// 假设每行数据以逗号分隔
let row = line.split(',').map(num => parseFloat(num.trim()));
result.push(row);
}
console.log('二维数组:', result);
} catch (err) {
console.error('读取文件失败:', err);
}
注意替换实际文件路径,并根据文本内容的分隔符调整split
参数(例如空格分隔使用split(' ')
)。如果数据格式复杂(如混合分隔符),需添加额外的清洗或解析逻辑。