使用electronjs将目录从外部驱动器复制到本地文件夹的最佳方法?

问题描述

只是想知道是否有人尝试将目录从外部驱动器(通过 USB 连接)复制到本地文件夹。

我正在使用 Electronjs,因此我可以使用我的 JavaScript、HTML/CSS 技能来创建桌面应用程序,而无需使用 C 语言。 (即 C# 或 C++)使用 Electronjs,无需担心太多。

这是我迄今为止尝试过的事情的列表:

  • 基本的 fs.copyFile(最初使用 copyFile,然后循环遍历目录以复制所有文件

     var fs = require('fs');
    
     window.test = () => {
    
     fs.moveSync("targetFile","destDir",function(err) {
         if(err){
           console.log(err);
         }else{
           console.log("copy complete")
         }
       });
      }
    

fs.moveSync 不是函数,尽管 Visual Studio Code 在我输入 fs 时提出了 moveSync 作为建议。 (ctrl + 空格)

  • 使用 child_process 函数使用命令行复制文件代码是:

     var process = require('child_process')
    
     window.test = function(){
     process.exec('ipconfig',function(err,stdout,stderr){
         if(err){
             console.log(err);
         }else{
             console.log(stdout)
         }
     })
    }
    

然后与browserify捆绑。然后将 Bundle.js 导入到 html 文件中,单击按钮即可调用测试函数。我知道现在命令是 ipconfig,这只是用来查看是否可以执行命令。看起来可能是因为我得到了 process.exec 未定义。

  • 使用 node-hid 节点模块从外部驱动器读取和传输数据。

该模块中公开的函数也被报告为未定义。我考虑了更长时间的用例,我认为一个简单的复制过程就足够了,因为可以像文件资源管理器中的任何其他文件夹一样访问外部驱动器。

不幸的是,上述所有方法都失败了,我花了一天的大部分时间寻找替代模块和/或解决方案。

提前致谢,我们将不胜感激。

谢谢

帕特里克

解决方法

npm 包 fs-extra 应该可以解决您的问题。

它有 move 函数,它

移动文件或目录,甚至跨设备

,

最终将其添加到我的 preload.js 中:

window.require = require;

它现在可以使用,但会折旧。 我会暂时使用它,并在需要时进行其他更新。