2018年4月23日 星期一

使用Electron開啟檔案

使用Electron開啟檔案

前言

  這是第2次使用Electron,這次要實作在商用軟體常用的的開啟檔案,在此就做個紀錄。

內容

  這次要在Electron中使用node.js的模組(module),使用fs模組來開啟檔案與使用dialog模組來選取檔案。

  在Electron使用模組時不能直接透過require()來取得該模組,要使用的話要改一下方法,載入的程式碼如下

 const remote = require('electron').remote;
 const fs = remote.require('fs');
 const dialog = remote.dialog ;

可以看到的是和node.js不一樣,在node.js只須直接require()即可,但Electron需要透過Electron模組的remote模組來取得fs模組與dialog模組。

  開啟選取檔案視窗的用法是透過dialog.showOpenDialog()來開啟,使用的範例如下

dialog.showOpenDialog(properties: ['openFile']},function(fileURLList){
  if(!fileURLList){
    console.log("No file to selected!");
    return;
  }
  for(var i=0;i<fileURLList.length;i++){
    console.log("Select file:"+fileURLList[i]);
  }
});

這裡要注意因為選取檔案視窗是可以選取多個檔案的,所以得到的結果是個List。如果想知道更多的用法可以到dialog模組,取得更多的資訊。

  fs模組用起來和node.js是一樣的,開啟的範例如下

  
fs.readFile("c:\test.txt",function(err,dataBuf){
    if(err){
      console.log("readFile error:" + err);
      return;
    }
    //
  });

開啟後會得到一個dataBuf,它是一個型別為Buffer的資料,要注意的是Buffer並不是javascript定義的型別,它是node.js定義的,要得到更多的資訊請到Buffer。這個方法是用binary的方法讀取檔案,如果要用文字的方式讀取範例如下

fs.readFile("c:\test.txt","utf-8",function(err,str){
    if(err){
      console.log("readFile error:" + err);
      return;
    }
    //
  });

用起來只須在參數多加一個"utf-8",接收資料的參數就會變成string。

參考資料

remote模組
dialog模組
Buffer

沒有留言:

張貼留言