尝试

context.filesDir; // 获取沙箱路径

context.cacheDir

context.tempDir

context.databaseDir

context.preferencesDir

context.bundleCodeDir

context.distributedFilesDir

context.resourceDir

这些里面是找不到项目目录中的资源文件的

只能以二进制获取

而且文件必须保存在特定目录下,以yyyy.pdf为例

/src/main/resources/rawfile/yyyy.pdf

然后通过资源管理方式读取

需要引入的头文件有

import { filePreview } from '@kit.PreviewKit';

import { BusinessError } from '@kit.BasicServicesKit';

import { resourceManager } from '@kit.LocalizationKit';

import { fileIo as fs, fileUri } from '@kit.CoreFileKit';

import { promptAction } from '@kit.ArkUI';

然后 读取文件

let uiContext = getContext(this);

let name:string = "yyyy.pdf";

let fileName: string = name;

let ssd:resourceManager.RawFileDescriptor = uiContext.resourceManager.getRawFdSync(name);

uiContext.resourceManager.getRawFileContent(name, (error: BusinessError, value: Uint8Array) => {

if (error != null) {

console.error("error is " + error);

} else {

//这里获取到文件二进制数据 然后进行下一步操作

}

});

} catch (error) {

}

将文件写入沙盒路径获取uri

let context = getContext(this);

let fileDir = context.filesDir; // 获取沙箱路径

let filePath = fileDir + '/' + fileName;

let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); // 创建文件

let uri = fileUri.getUriFromPath(filePath); // 获取uri

let writeLen = fs.writeSync(file.fd, value.buffer); // 写入文件

console.info("write data to file succeed and size is:" + writeLen);

fs.closeSync(file);

uri成功得到

推荐阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。