使用电子在本地保存文件
Posted
技术标签:
【中文标题】使用电子在本地保存文件【英文标题】:Saving files locally with electron 【发布时间】:2016-10-30 06:07:08 【问题描述】:我有一些模板文件,每个文件都包含一些变量字符串,我想用 Electron (https://www.electronjs.org/) 构建一个非常简单的输入表单,并且我想将组合的输出文件保存在用户的计算机上。
有什么模块可以让 Electron 在本地保存文件吗?
【问题讨论】:
fs? @Zen 有没有办法用一个命令创建多个目录(即path/dir
,path/dir2
,...),或者是循环mkdir
的唯一方法?
【参考方案1】:
如果您针对多个平台,我回答了a similar question here。基本上app.getPath(name)、app.setPath(name, path) 和app.getAppPath() 在将文件保存到正确的位置时非常有用,无论操作系统如何。
您可能还想查看这些有助于简化将文件直接保存到主机的 Nodejs 包...
fs-jetpack graceful-fs Node.js fs如果您打算让用户保存文件,您还可以查看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,因为我无法获得完整的选定路径。以上是关于使用电子在本地保存文件的主要内容,如果未能解决你的问题,请参考以下文章