电子对话框文件路径“\\”到“/”?
Posted
技术标签:
【中文标题】电子对话框文件路径“\\\\”到“/”?【英文标题】:Electron Dialog filePath "\\" to "/"?电子对话框文件路径“\\”到“/”? 【发布时间】:2021-09-19 18:13:17 【问题描述】:我在电子中打开一个对话框来选择一个文件夹,我想读出文件路径。 但是 result.filePaths 给了我一个带有 \\ 的文件路径,这对我来说是不可行的,以便稍后读取文件夹中的文件。 ????
现在的结果:
"P:\\Social Media\\Soundboard\\Sounds"
预期结果:
“P:/社交媒体/音板/声音”
有没有办法把它转换成“/”? ????
我的代码:
const dialog = require('electron').remote.dialog
dialog.showOpenDialog(
properties: ['openDirectory', 'multiSelections']
).then(result =>
//Get Selected Folders
folderpath = result.filePaths
console.log(folderpath)
);
【问题讨论】:
文件路径包含\\
的问题是什么?
我想读取目录中的所有声音文件,使用 fs.readdir 它不会读取文件路径,我认为这是因为格式。 ??????
【参考方案1】:
Windows 使用\
而不是/
来分隔嵌套资源。但它支持两者。如果您仍想将\\
转换为/
。你可以试试下面的方法。
//Get Selected Folders
folderpath = result.filePaths.replaceAll('\\', '/');
console.log(folderpath);
【讨论】:
我做到了。谢谢,我在 JS 中学到了一些新东西。 replaceAll 以后也很方便 ^^【参考方案2】:这是我开发电子应用程序以在 unix 和 windows 上运行而没有任何问题的方法。
我没有使用path
模块函数,而是使用下面的模块扩展了该功能并改为调用它。这将清理所有路径并将它们转换为正确的 unix 路径,例如“/var/path/file”或“C:/path/file”。
Windows 实际上可以使用 unix 路径来创建/读取/更新/移动文件和文件夹。
export default
extname (file)
return path.extname(file)
,
resolve ()
return this.sanitizePath(Array.from(arguments).join('/').replace('//', '/'))
,
normalize ()
const file = this.resolve(...arguments)
return this.sanitizePath(path.normalize(file))
,
basename (file, ext = '')
return this.sanitizePath(path.basename(file, ext))
,
dirname (file)
return this.sanitizePath(path.dirname(file))
,
relative (from, to)
return this.sanitizePath(path.relative(path.resolve(from), path.resolve(to)))
,
sanitizePath (absPath)
// fix windows separator
return absPath.replaceAll(path.sep, '/')
我唯一需要 Windows 特定路径的时候是 shell.moveItemToTrash(file)
,为此我必须使用这个客户端函数
convertPathForWin (file, os = navigator.platform)
return (os.toLowerCase() === 'win32') ? file.replaceAll('/', '\\') : file
【讨论】:
嗯。有趣的。我还没有考虑过 unix,但如果我在 Linux 和 MacOS 上测试我的应用程序,也许以后它会变得有用。但是现在Windows是第一位的?谢谢你的回复? 如果您使用的是 Electron,那么不将您的应用程序部署到 linux 和 mac 是一种耻辱。 不,我也想将它用于 Linux 和 MacOS。但是对于任何平台,我都必须进行一些优化和代码更改。由于很多 Soundboard 应用程序的问题,我决定创建自己的。在发布之前,我为所有平台构建了它,别担心? 我通常更多地从事 Web 前端工作,所以我首先选择了 Electron,因为它具有简单的开发体验。但我必须在这段旅程中学到很多东西^^以上是关于电子对话框文件路径“\\”到“/”?的主要内容,如果未能解决你的问题,请参考以下文章
MacOS下Chrome浏览器打开文件选择对话框快速切换路径的方法
MacOS下Chrome浏览器打开文件选择对话框快速切换路径的方法