我在做一个电子应用程序(html/css/js/nodejs),我现在做得很好,所以我想创建一个“树文件管理器”,这是我的应用程序类型的大多数概念中的一个重要功能。我希望能够创建删除,移动,重命名文件夹和文件夹中的内容我不想要一个现代的文件管理器,但至少要有一个功能。我已经搜索了好几天了什么都没有。请链接资源或解释我如何实现这一点。
xoshrz7s1#
Electron附带了Node.js,它具有强大的文件系统API,您可以使用文件管理器的所有功能。我写了几个函数来帮助你开始:
getDirItemInfo()
getDirItems()
const _path = require('path') const fs = require('fs') async function getDirItemInfo (path) { const basePath = _path.parse(path).base return await fetchItemObject(path, basePath) } async function getDirItems (dirPath) { return new Promise((resolve, reject) => { // Read directory and get items fs.promises.readdir(dirPath) .then(basePaths => { const statsPromises = basePaths.map(basePath => { const path = _path.join(dirPath, basePath) return fetchItemObject(path, basePath) }) return Promise.all(statsPromises) }) .then(contents => { // Remove items that couldn't be accessed (undefined, null, false) contents = contents .filter(Boolean) resolve(contents) }) .catch((error) => { console.log(error) }) }) } async function fetchItemObject (path, basePath) { try { let dirItemCount = null const stat = await fs.promises.lstat(path) const name = basePath === '' ? path : basePath if (stat.isDirectory()) { // Count dir items and ignore dirs that couldn't be accessed by readdir try { const dirItems = await fs.promises.readdir(path) dirItemCount = dirItems.length } catch (error) { console.log(error) } stat.size = null } return ({ dirItemCount, name, path, stat }) } catch (error) { console.log(error) } } // USE FUNCTIONS: let path1 = _path.normalize('E:/test/test.jpg') let path2 = _path.normalize('E:/test') fetchItemObject(path1) .then((result) => { console.log(result) }) getDirItems(path2) .then((result) => { console.log(result) })
字符串您可以在其文档中找到所有Node.js文件系统API:https://nodejs.org/api/fs.html
1条答案
按热度按时间xoshrz7s1#
Electron附带了Node.js,它具有强大的文件系统API,您可以使用文件管理器的所有功能。
我写了几个函数来帮助你开始:
getDirItemInfo()
函数的作用是:为指定路径创建数据对象getDirItems()
函数获取目录的内容,并为每个项目创建一个数据对象。字符串
您可以在其文档中找到所有Node.js文件系统API:
https://nodejs.org/api/fs.html