当前位置: 首页 > 知识库问答 >
问题:

用电子打开外部文件

闻人凯泽
2023-03-14

我有一个运行的电子应用程序,到目前为止工作得很好。对于上下文,我需要运行/打开一个外部文件,它是一个Go-lang二进制文件,用于执行一些后台任务。基本上,它将充当后端,并公开Electron应用程序将使用的API。

到目前为止,我所了解的是:

>

  • 我试图用"节点方式"打开文件child_process但是我可能由于路径问题而无法打开示例txt文件。

    Electron API公开了一个open file事件,但它缺少文档/示例,我不知道它是否有用。

    就这样。如何在Electron中打开外部文件?

  • 共有3个答案

    习洲
    2023-03-14

    也许你在找这个?

    dialog.showOpenDialog参考:https://www.electronjs.org/docs/api/dialog

    如果使用electron@13.1.0,您可以这样做:

    const { dialog } = require('electron')
    console.log(dialog.showOpenDialog({ properties: ['openFile', 'multiSelections'] }))
    
    dialog.showOpenDialog(function(file_paths){
      console.info(file_paths)  // => this gives the absolute path of selected files.
    })
    
    

    当触发上述代码时,您可以看到这样的“打开文件对话框”(win/mac/linux的不同视图样式)

    顾均
    2023-03-14

    Electron允许使用nodejs包。

    换句话说,导入节点包就像您在节点中一样,例如:

    var fs = require('fs');
    

    要运行Go语言二进制文件,可以使用child_process模块。留档很彻底。

    编辑:您必须解决路径差异。打开文件事件是由窗口触发的客户端事件。这不是你想要的。

    壤驷彦
    2023-03-14

    有几个api,你可能想研究一下,看看哪个对你有帮助。

    fs模块允许您直接打开文件进行读写。

    var fs = require('fs');
    fs.readFile(p, 'utf8', function (err, data) {
      if (err) return console.log(err);
      // data is the contents of the text file we just read
    });
    

    路径模块允许您以与平台无关的方式构建和解析路径。

    var path = require('path');
    var p = path.join(__dirname, '..', 'game.config');
    

    shellapi是一个纯电子api,您可以使用它在给定路径下执行文件,该路径将使用操作系统默认应用程序打开文件。

    const {shell} = require('electron');
    // Open a local file in the default app
    shell.openItem('c:\\example.txt');
    
    // Open a URL in the default way
    shell.openExternal('https://github.com');
    

    假设您的Go语言二进制文件是可执行文件,那么您将使用child_process.spawn调用它并与之通信。这是一个节点api。

    var path = require('path');
    var spawn = require('child_process').spawn;
    
    var child = spawn(path.join(__dirname, '..', 'mygoap.exe'), ['game.config', '--debug']);
    // attach events, etc.
    

    如果您的golang二进制文件不是可执行文件,那么您需要制作一个本机插件包装器。

     类似资料:
    • 我的electron应用程序中有一个按钮,上面写着“打开文件”,当你点击它时,打开文件对话框就会出现,我可以选择一个文件。 但是,当我从应用程序工具栏中单击菜单项时,如何打开“打开文件对话框”? 这是工具栏菜单子菜单中的我的标签: 我想做这样的事情: 但没有“开放”这样的角色。 如何实现打开打开文件对话框的单击事件? Main.js打开文件部分: index.js:

    • 问题内容: 我有一个电子应用程序。我尝试使该应用程序打开一个.exe文件。我在根文件夹中创建了一个目录,并将.exe文件放置在该目录中。在开发中,使用可以打开文件没有问题,但是当我打包应用程序(使用)时,它不会打开exe文件,并且该文件夹上也没有文件夹。 我尝试编写使用来控制台默认位置的脚本,并输出(文件)。 打包应用程序后,如何添加可以访问的外部文件? 问题答案: 通过使用extraResour

    • 问题内容: 我想知道如何根据文件扩展名在记事本和图片查看器等程序中打开文件。我在Windows上使用Python 3.3。 我已经做过一些研究,人们提到了一个名为的模块,但是当我尝试导入该模块时,我收到一个ImportError。 这是我到目前为止的内容: 我还将拥有需要在记事本中打开的HTML和JSON文件。 问题答案: 使用此命令可使用默认程序打开任何文件: 如果您确实想使用某个程序,例如记事

    • 我想打开一个PDF文件时,用户点击一个按钮。目前,我正在使用这段代码来实现这一点: 但不管用。 当我选择使用Adobe Acrobat时,我会得到一条显示为Toast的消息,它说 当我尝试使用Drive PDF Viewer时,我得到 PDF文件存储在 问题出在哪里? 编辑 现在我使用的是以下代码: 但当我尝试通过点击按钮打开PDF时,应用程序崩溃了。 这是我得到的日志: 这是我的课: } 有人能

    • 问题内容: 我做了以下工作; 这在Mac OS中触发,但在Windows中不触发。在Windows中还有其他事件或其他方式可以执行此操作吗? 问题答案: 这是仅Mac功能。最接近的替代方法是app.makeSingleInstance(callback)。 您可以安排使用url作为参数启动应用程序:myApp my-scheme:// stuff 然后,无论首先启动哪个应用程序进程,都使用url进

    • 我有一个电子应用程序,可以在单独的选项卡中编辑多个文件,比如Atom或VS代码。当通过对话框打开文件时,或者当应用程序未运行(通过解析argv)时,通过“打开方式”打开文件时,此功能可以正常工作。 然而,我不知道如何将通过“打开”打开的文件“添加”到已经运行的应用程序——默认情况下,会创建该应用程序的第二个新实例。我希望能够以某种方式将文件的路径传递给原始应用实例。 我浏览了文档,发现唯一有希望的