【问题标题】:Saving files locally with electron使用电子在本地保存文件
【发布时间】:2016-10-30 06:07:08
【问题描述】:

我有一些模板文件,每个文件都包含一些变量字符串,我想用 Electron (https://www.electronjs.org/) 构建一个非常简单的输入表单,并且我想将组合的输出文件保存在用户的计算机上。

有什么模块可以让 Electron 在本地保存文件吗?

【问题讨论】:

  • fs?
  • @Zen 有没有办法用一个命令创建多个目录(即path/dirpath/dir2,...),或者是循环mkdir的唯一方法?

标签: javascript forms npm electron


【解决方案1】:

如果您针对多个平台,我回答了a similar question here。基本上app.getPath(name)app.setPath(name, path)app.getAppPath() 在将文件保存到正确的位置时非常有用,无论操作系统如何。

您可能还想查看这些有助于简化将文件直接保存到主机的 Nodejs 包...

如果您打算让用户保存文件,您还可以查看Dialog api,您可以在其中专门为此目的调用save dialog

【讨论】:

  • 我使用 app.getAppPath 创建了一个文件。您不得在托管电子应用程序的文件夹中创建文件。
【解决方案2】:

示例代码是:

const fs = require('fs');
try { fs.writeFileSync('myfile.txt', 'the text to write in the file', 'utf-8'); }
catch(e) { alert('Failed to save the file !'); }

您当然可以将文件名和内容名存储在变量中。

这会将内容保存在myfile.txt 中,该目录位于当前工作目录内(您可以通过process.cwd() 获取)。如果你想写,比如说在用户的主目录,你可以使用app.getPath函数。

【讨论】:

  • 这应该保存到哪里?似乎对我不起作用。
  • 如何定义保存文件的具体路径
  • 什么意思?
  • 如果您像我一样指定相对路径,它将保存在您在当前目录下提供的路径上(例如C:\MyIncredibleFolder\myfile.txt)。如果您提供绝对路径,它会将文件保存在您提供的确切路径下。另外,如果你想知道你给出的相对路径会产生什么结果,你可以打印require('path').join(process.cwd(), "my/relative/path.txt")的结果
  • 这会引发更多问题,然后才能回答。
【解决方案3】:
const {dialog} = require('electron').remote;
var fs = require('fs');

export default {
    methods: {
        save: function () {
            var options = {
                title: "Save file",
                defaultPath : "my_filename",
                buttonLabel : "Save",

                filters :[
                    {name: 'txt', extensions: ['txt']},
                    {name: 'All Files', extensions: ['*']}
                ]
            };

            dialog.showSaveDialog(null, options).then(({ filePath }) => {
                fs.writeFileSync(filePath, "hello world", 'utf-8');
            });
        },
    }
}

【讨论】:

  • 优秀;这次真是万分感谢。我没有意识到 Electron 内置了这些功能。我的用例缺少新的File System Access API,因为我无法获得完整的选定路径。
猜你喜欢
  • 2018-07-10
  • 2018-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-16
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
相关资源
最近更新 更多