遍历目录中所有文件,遍历指定目录,获取当前目录下所有文件,并通过页面展示文件列表。

遍历目录中所有文件


HarmonyOS
2024-05-20 22:11:21
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

在应用file目录下,手动创建文件和目录类型的两种文件用于测试,然后使用fileio模块对file目录进行遍历,获取当前目录下所有文件,并通过List组件进行显示。

能力介绍

模块:fileio文件管理

示例实现

获取file目录沙箱路径。

let path = getContext(this).filesDir

file目录下新建4个测试文件。

let fd1 = fileio.openSync(path + '/testFile_01', 0o102, 0o640); 
let fd2 = fileio.openSync(path + '/testFile_02', 0o102, 0o640); 
fileio.mkdirSync(path + '/testDir_01', 0o775) 
fileio.mkdirSync(path + '/testDir_02', 0o775)

打开当前应用的file目录,获取dir对象。

let dir = fileio.opendirSync(path)

遍历目录,将目录中文件路径存入数组。

// 读取下一个目录项 
let dirent = dir.readSync() 
while (dirent) { 
let name = dirent.name 
this.pathList.push(name) 
dirent = dir.readSync() 
}

使用List组件展示文件路径列表。

if (this.pathList.length > 0) { 
List() { 
ForEach(this.pathList, (path) => { 
ListItem() { 
Column() { 
Row() { 
Text(path) 
.fontSize(20) 
}.height(30) 
}.width("100%") 
} 
}) 
} 
}

全量代码

import fileio from '@ohos.fileio'; 
import prompt from '@ohos.prompt'; 
  
  
@Entry 
@Component 
struct DirPage { 
@State message: string = 'Hello World' 
@State pathList: Array<string> = [] 
  
  
build() { 
Row() { 
Column({ space: 8 }) { 
Button(`创建文件`) 
.fontSize(30) 
.onClick(() => { 
let path = getContext(this).filesDir 
let fd1 = fileio.openSync(path + '/testFile_01', 0o102, 0o640); 
let fd2 = fileio.openSync(path + '/testFile_02', 0o102, 0o640); 
fileio.close(fd1) 
fileio.close(fd2) 
prompt.showToast({message:`创建文件成功`}) 
}) 
Button(`创建目录`) 
.fontSize(30) 
.onClick(() => { 
let path = getContext(this).filesDir 
fileio.mkdirSync(path + '/testDir_01', 0o775) 
fileio.mkdirSync(path + '/testDir_02', 0o775) 
prompt.showToast({message:`创建目录成功`}) 
}) 
Button(`获取所有文件`) 
.fontSize(30) 
.onClick(() => { 
let path = getContext(this).filesDir 
// 打开目录 
let dir = fileio.opendirSync(path) 
  
  
// 读取下一个目录项 
let dirent = dir.readSync() 
while (dirent) { 
let name = dirent.name 
  
  
this.pathList.push(name) 
dirent = dir.readSync() 
} 
dir.close() 
prompt.showToast({message:`获取所有文件成功`}) 
}) 
if (this.pathList.length > 0) { 
List() { 
ForEach(this.pathList, (path) => { 
ListItem() { 
Column() { 
Row() { 
Text(path) 
.fontSize(20) 
}.height(30) 
}.width("100%") 
} 
}) 
} 
} 
} 
.width('100%') 
} 
.height('100%') 
} 
}
分享
微博
QQ
微信
回复
2024-05-22 16:00:54
相关问题
如何获取工程目录下的json文件
764浏览 • 1回复 待解决
鸿蒙如何读取resources目录下文件
3323浏览 • 1回复 待解决
java怎么读取公共目录下文件
2197浏览 • 1回复 待解决
HarmonyOS如何获取用户相册所有目录
2002浏览 • 1回复 待解决
如何监听文件文件目录的变化
1654浏览 • 1回复 待解决
资源目录下文件到沙箱的单向流动
843浏览 • 1回复 待解决
Native侧如何获取可操作的文件目录
1925浏览 • 1回复 待解决
image组件,files目录文件不显示
1572浏览 • 1回复 待解决