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

fkvaft9z  于 2021-09-23  发布在  Java
关注(0)|答案(2)|浏览(369)

我在electron中打开一个对话框来选择一个文件夹,我想读取文件路径。但是result.filepath为我提供了一个文件路径,其中包含\我无法使用的内容,以便以后读取文件夹中的文件。😅
现在的结果是:
“p:\social media\soundboard\sounds”
预期结果:
“p:/social media/soundboard/sounds”
有没有办法把它转换成“/”?🤔

我的代码:

const dialog = require('electron').remote.dialog

dialog.showOpenDialog({
    properties: ['openDirectory', 'multiSelections']
}).then(result => { 

 //Get Selected Folders
 folderpath = result.filePaths
 console.log(folderpath)
});
azpvetkf

azpvetkf1#

windows使用 \ 分隔嵌套资源而不是 / . 但这两者都支持。如果你还想转换 \\/ . 你可以试试下面的方法。

//Get Selected Folders
 folderpath = result.filePaths.replaceAll('\\', '/');
 console.log(folderpath);
lymgl2op

lymgl2op2#

下面是我如何开发electron应用程序,使其在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
}

相关问题