HarmonyOS鸿蒙Next中如何根据uri读取文件

HarmonyOS鸿蒙Next中如何根据uri读取文件 使用’@ohos.multimedia.mediaLibrary’中的getFileAssets接口获取到了FileAsset,如何通过FileAsset的uri属性读取到文件流Stream?

@ohos.document中也有方法可以获取文件的uri,如何通过这个属性获取文件流Stream呢?

3 回复

开发者您好,可以通过fs.open()方法打开文件,返回File。可参考以下文档:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-file-fs.md#fsfdopenstreamsync

更多关于HarmonyOS鸿蒙Next中如何根据uri读取文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,根据URI读取文件可以通过FileIO模块实现。首先,使用FileIOopen方法打开文件,传入URI和打开模式(如FileIO.OpenMode.READ_ONLY)。然后,使用read方法读取文件内容。读取完成后,调用close方法关闭文件。以下是一个示例代码:

import fileio from '@ohos.fileio';

let uri = 'file:///data/user/0/com.example.app/files/example.txt';
let file = fileio.open(uri, fileio.OpenMode.READ_ONLY);
let buffer = new ArrayBuffer(1024);
let readLen = fileio.read(file.fd, buffer);
let content = String.fromCharCode.apply(null, new Uint8Array(buffer.slice(0, readLen)));
fileio.close(file.fd);

这段代码展示了如何根据URI读取文件内容。open方法返回一个文件描述符,read方法将文件内容读取到缓冲区,close方法关闭文件。

在HarmonyOS鸿蒙Next中,可以通过FileFileReader类根据URI读取文件。首先,使用File类根据URI创建文件对象,然后通过FileReader读取文件内容。示例代码如下:

import ohos.global.resource.RawFileEntry;
import ohos.global.resource.ResourceManager;
import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;
import java.io.IOException;
import java.io.InputStream;

public class FileUtil {
    private static final HiLogLabel LABEL = new HiLogLabel(HiLog.LOG_APP, 0x00201, "FileUtil");

    public static String readFileFromUri(ResourceManager resourceManager, String uri) {
        RawFileEntry rawFileEntry = resourceManager.getRawFileEntry(uri);
        try (InputStream inputStream = rawFileEntry.openRawFile()) {
            byte[] buffer = new byte[inputStream.available()];
            inputStream.read(buffer);
            return new String(buffer);
        } catch (IOException e) {
            HiLog.error(LABEL, "Failed to read file from URI: " + uri, e);
            return null;
        }
    }
}

此代码通过ResourceManager获取RawFileEntry,然后读取文件内容并返回字符串。

回到顶部