HarmonyOS 鸿蒙Next '@ohos.file.fs' 中listFileSync方法参数ListFileOptions的filter中suffix过滤无效
sourcePath的路径确定是否为沙箱路径下:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/application-context-stage-0000001820999605#ZH-CN_TOPIC_0000001857915861__
按照你的过滤suffix,是能查出来文件的
import fs, { ListFileOptions } from '@ohos.file.fs';
import common from '@ohos.app.ability.common';
@Entry
@Component
struct Page2 {
build() {
Column() {
Button('createFile')
.onClick(() => {
this.createFile()
})
Button('getListFile')
.onClick(() => {
this.getListFile()
})
}
}
//创建文件至应用沙箱下
createFile(): void {
// 获取应用文件路径
let context = getContext(this) as common.UIAbilityContext;
let filesDir = context.filesDir;
let file = fs.openSync(filesDir + '/test.txt', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let writeLen = fs.writeSync(file.fd, 'Try to write str.');
console.info('The length of str is: ' + writeLen);
fs.closeSync(file);
let dirPath = filesDir + '/upload';
fs.mkdirSync(dirPath, true);
let file2 = fs.openSync(dirPath + '/word', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let file3 = fs.openSync(dirPath + '/word.doc', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let file4 = fs.openSync(dirPath + '/index.html', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let writeLen2 = fs.writeSync(file2.fd, '我是word.');
let writeLen3 = fs.writeSync(file3.fd, '我是word.doc.');
let writeLen4 = fs.writeSync(file4.fd, '我是html.');
console.info('我是word: ' + writeLen2);
console.info('我是word.doc: ' + writeLen3);
console.info('我是html: ' + writeLen4);
fs.closeSync(file2);
fs.closeSync(file3);
fs.closeSync(file4);
}
// 查看应用沙箱下文件列表
getListFile() {
// 获取应用文件路径
let context = getContext(this) as common.UIAbilityContext;
let filesDir = context.filesDir + '/upload';
let listFileOption: ListFileOptions = {
recursion: false,
listNum: 0,
filter: {
suffix: ['.txt'],
fileSizeOver: 0,
}
};
let files = fs.listFileSync(filesDir, listFileOption);
for (let i = 0; i < files.length; i++) {
console.info(`The name of file: ${files[i]}`);
}
}
}
测试多个文件过滤有效,没能复现你的问题
import fs, { ListFileOptions } from '@ohos.file.fs';
import common from '@ohos.app.ability.common';
@Entry
@Component
struct Page2 {
build() {
Column() {
Button('createFile')
.onClick(() => {
this.createFile()
})
Button('getListFile')
.onClick(() => {
this.getListFile()
})
}
}
//创建文件至应用沙箱下
createFile(): void {
// 获取应用文件路径
let context = getContext(this) as common.UIAbilityContext;
let filesDir = context.filesDir;
let file = fs.openSync(filesDir + '/test.txt', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let writeLen = fs.writeSync(file.fd, 'Try to write str.');
console.info('The length of str is: ' + writeLen);
fs.closeSync(file);
let dirPath = filesDir + '/upload';
fs.mkdirSync(dirPath, true);
let file2 = fs.openSync(dirPath + '/word', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let file3 = fs.openSync(dirPath + '/word.doc', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let file4 = fs.openSync(dirPath + '/index.html', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let writeLen2 = fs.writeSync(file2.fd, '我是word.');
let writeLen3 = fs.writeSync(file3.fd, '我是word.doc.');
let writeLen4 = fs.writeSync(file4.fd, '我是html.');
console.info('我是word: ' + writeLen2);
console.info('我是word.doc: ' + writeLen3);
console.info('我是html: ' + writeLen4);
fs.closeSync(file2);
fs.closeSync(file3);
fs.closeSync(file4);
}
// 查看应用沙箱下文件列表
getListFile() {
// 获取应用文件路径
let context = getContext(this) as common.UIAbilityContext;
let filesDir = context.filesDir + '/upload';
let listFileOption: ListFileOptions = {
recursion: false,
listNum: 0,
filter: {
suffix: ['.txt'],
fileSizeOver: 0,
}
};
let files = fs.listFileSync(filesDir, listFileOption);
for (let i = 0; i < files.length; i++) {
console.info(`The name of file: ${files[i]}`);
}
}
}
更多关于HarmonyOS 鸿蒙Next '@ohos.file.fs' 中listFileSync方法参数ListFileOptions的filter中suffix过滤无效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙系统中,关于@ohos.file.fs
模块中的listFileSync
方法,如果在使用ListFileOptions
的filter
属性时设置suffix
过滤无效,可能是因为以下几个原因:
-
参数格式错误:确保
suffix
参数的值是正确的字符串格式,且应只包含文件后缀名(例如".txt"),不包括路径或文件名前缀。 -
API版本支持:检查你所使用的鸿蒙系统版本是否支持通过
suffix
进行文件过滤。某些早期版本或特定配置可能不支持该特性。 -
路径权限:确保你的应用有权限访问目标目录。权限不足可能导致过滤无效,即使代码逻辑正确。
-
实现细节:
listFileSync
方法的实现可能依赖于底层文件系统的支持。如果底层文件系统对后缀过滤有特定限制或不支持,也可能导致此问题。 -
编码问题:检查代码中字符串的编码是否与文件系统编码一致,不一致可能导致匹配失败。
针对上述问题,建议检查代码中的参数设置、系统文档以及权限配置。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,