我有一个电子应用程序,它也可以对同一目录中的文件进行操作。这些不是用户选择的文件,也不是电子应用程序中捆绑的文件,但我需要引用它们
例如:
我需要知道该应用程序的位置,例如:
但是当test.app
被运行时,我得到:
尝试访问/Users/test/Documents/myapp.app/Contents/Resources/app/test.zip
或使用相对路径/test.zip
时导致错误。
在这种情况下,我如何可靠地访问example.zip?请注意,我无法将其与我的应用程序捆绑在一起,它被其他人放置在那里,所以移动它不是一个选项,而且它是我希望在那里的文件。
答案 0 :(得分:1)
一位朋友和我查看了Atom是如何做到的并且达到了这个解决方案:
function getAppRoot() {
if ( process.platform === 'win32' ) {
return path.join( app.getAppPath(), '/../../../' );
} else {
return path.join( app.getAppPath(), '/../../../../' );
}
}
答案 1 :(得分:0)
我认为app.getPath('exe')
或process.execPath
正是您要找的。它们都为您提供了当前使用的可执行文件的路径。
编辑:查看app.getPath()的文档以获取所有不同文件夹的路径(例如家庭,appdata,文档等)
答案 2 :(得分:0)
你在哪里运行Electron App?如果它在'Documents'(我假设Windows)下运行,您可以将文档传递给app.getPath,如下所示:app.getPath('documents')
。
如果从渲染过程中调用此方法,则可能必须导入remote
并在渲染过程remote.app.getPath('documents');
中执行以下操作。
这个electron doc会更好地解释您可以传递的路径选项。
答案 3 :(得分:-1)
您可以使用background: url('../media/city_pictures.jpg');
功能列出特定目录中的所有文件(可能是您的应用程序或任何地方)。您可以从代码中创建一个目录以放置所有新文件,这样您就可以更容易地将它们正确列出来处理。
fs.readdir
How do you get a list of the names of all files present in a directory in Node.js?