请问 HarmonyOS 鸿蒙Next 怎么复制resources/rawfile文件下的文件到沙箱目录下 请问怎么获取系统声音文件的uri
1,HarmonyOS 鸿蒙Next:请问怎么复制resources/rawfile文件下的文件到沙箱目录下
2,HarmonyOS 鸿蒙Next:请问怎么获取系统声音文件的uri
1,请问怎么复制resources/rawfile文件下的文件到沙箱目录下。2,请问怎么获取系统声音文件的uri
2 回复
import util from '@ohos.util';
import { BusinessError } from '@ohos.base';
import common from '@ohos.app.ability.common';
import fs, { ListFileOptions, ReadOptions } from '@ohos.file.fs';
import buffer from '@ohos.buffer';
@Entry
@Component
struct Page2 {
@State data: string = ''
context = getContext(this) as common.UIAbilityContext;
build() {
Column() {
Button('1、获取rawfile目录下test.txt数据')
.onClick(() => {
this.getRawFileData()
})
Button('2、data数据写入沙箱文件')
.onClick(() => {
this.writeData()
})
Button('3、读取沙箱文件数据')
.onClick(() => {
this.readData()
})
Button('4、获取沙箱文件列表')
.onClick(() => {
this.getListFile()
})
}
}
getRawFileData() {
try {
//将test.txt文件放入rawfile文件夹下
this.context.resourceManager.getRawFileContent("test.txt", (error: BusinessError, value: Uint8Array) => {
if (error != null) {
console.error("error is " + error);
} else {
let rawFile = value;
console.log(`获取的test的内容是:${rawFile}`)
//Uint8Array转string
let textDecoder: util.TextDecoder = util.TextDecoder.create();
// 设置编码格式为“utf-8”
//let textDecoder = util.TextDecoder.create('utf-8', { ignoreBOM: true });
//rawFile转string
this.data = textDecoder.decodeWithStream(rawFile);
console.log(`输出string格式内容输出:${this.data}`)
}
});
} catch (error) {
let code = (error as BusinessError).code;
let message = (error as BusinessError).message;
console.error(`callback getRawFileContent failed, error code: ${code}, message: ${message}.`);
}
}
writeData() {
// 获取应用文件路径
let context = getContext(this) as common.UIAbilityContext;
let filesDir = context.filesDir;
let filePath = filesDir + '/test.txt'
console.log(`沙箱filePath的路径是:${filePath}`)
// 新建并打开文件
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
// 写入一段内容至文件,即将上述的data数据内容写入沙箱路径下的test文件
let writeLen = fs.writeSync(file.fd, this.data);
// 关闭文件
fs.closeSync(file);
}
//读取沙箱文件数据
readData(){
// 获取应用文件路径
let context = getContext(this) as common.UIAbilityContext;
let filesDir = context.filesDir;
let filePath = filesDir + '/test.txt'
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
// 从文件读取一段内容
let arrayBuffer = new ArrayBuffer(4096);
let readOptions: ReadOptions = {
offset: 0,
length: arrayBuffer.byteLength
};
let readLen = fs.readSync(file.fd, arrayBuffer, readOptions);
let buf = buffer.from(arrayBuffer, 0, readLen);
console.info("沙箱下test文件内容输出: " + buf.toString());
// 关闭文件
fs.closeSync(file);
}
// 查看沙箱文件列表
getListFile(): void {
// 获取应用文件路径
let context = getContext(this) as common.UIAbilityContext;
let filesDir = context.filesDir;
console.log('查看文件列表:' + filesDir)
let listFileOption: ListFileOptions = {
recursion: false,
listNum: 0,
filter: {
suffix: [".png", ".jpg", ".txt"],
displayName: ["test*"],
fileSizeOver: 0,
lastModifiedAfter: new Date(0).getTime()
}
};
let files = fs.listFileSync(filesDir, listFileOption);
for (let i = 0; i < files.length; i++) {
console.info(`The name of file: ${files[i]}`);
}
}
}
更多关于请问 HarmonyOS 鸿蒙Next 怎么复制resources/rawfile文件下的文件到沙箱目录下 请问怎么获取系统声音文件的uri的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
1,HarmonyOS 鸿蒙Next:在HarmonyOS中,要将resources/rawfile
目录下的文件复制到沙箱目录下,你可以使用文件访问API。首先,通过RawFileDescriptor
类获取resources/rawfile
文件的描述符,然后使用FileIO
类读取文件内容,并写入到沙箱目录中的目标文件。注意,你需要有相应的文件读写权限。示例代码如下:
RawFileDescriptor rawFileDescriptor = ...; // 获取rawfile文件描述符
FileIO fileIO = FileIO.open(rawFileDescriptor, "r");
byte[] buffer = new byte[1024];
FileOutputStream fos = new FileOutputStream(context.getFilesDir() + "/targetFile");
int bytesRead;
while ((bytesRead = fileIO.read(buffer)) != -1) {
fos.write(buffer, 0, bytesRead);
}
fos.close();
fileIO.close();
2,HarmonyOS 鸿蒙Next:要获取系统声音文件的URI,通常你需要通过系统的Content Provider访问媒体库。然而,直接访问系统声音文件的URI可能受限于系统权限和安全策略。你可以尝试使用MediaStore
查询系统声音文件,但需要注意权限和API限制。如果无法直接获取,可能需要通过系统API或特定接口请求这些资源。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html