电子对话框文件路径“\\”到“/”?

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,因为它具有简单的开发体验。但我必须在这段旅程中学到很多东西^^

以上是关于电子对话框文件路径“\\”到“/”?的主要内容,如果未能解决你的问题,请参考以下文章

在VB中如何读取到桌面的路径?

MacOS下Chrome浏览器打开文件选择对话框快速切换路径的方法

MacOS下Chrome浏览器打开文件选择对话框快速切换路径的方法

如何快速批量导出炒股软件F10里的部分信息,最终汇总生成EXCEL文件?

C# 打开以对话框,获取文件夹路径 文件的路径文件名

如何为 mtp 设备构建路径(可在文件夹浏览对话框中使用)?