node-webkit 在存取本機檔案時,最常遇到的問題是使用相對路徑的檔案會找不到。
舉個例子:當你的程式 myApp.exe 旁邊放了一個 config.txt 想存取時,如果檔案路徑只寫 config.txt 是找不到檔案的,這樣的寫法指的是要一起封裝進去 exe 內的檔案。
由於 node-webkit 執行程式時,是把程式內容先在背後解壓縮到系統的暫存資料夾中,再由該處執行,所以在程式中使用相對路徑時,是相對於暫存資料夾的。
想要取得相對於執行程式的路徑,就得先取得執行程式本身的位置,下面這個範例示範了如何存取執行檔旁邊的 config.txt。
舉個例子:當你的程式 myApp.exe 旁邊放了一個 config.txt 想存取時,如果檔案路徑只寫 config.txt 是找不到檔案的,這樣的寫法指的是要一起封裝進去 exe 內的檔案。
由於 node-webkit 執行程式時,是把程式內容先在背後解壓縮到系統的暫存資料夾中,再由該處執行,所以在程式中使用相對路徑時,是相對於暫存資料夾的。
想要取得相對於執行程式的路徑,就得先取得執行程式本身的位置,下面這個範例示範了如何存取執行檔旁邊的 config.txt。
非同步的方法:
var gui = require('nw.gui');
var path = require('path');
var fs = require('fs');
var appPath = path.dirname(process.execPath);
var configFilePath = path.join(appPath, "config.txt");
fs.readFile( configFilePath , "utf8", function (err, data) {
if (!err) {
console.log(data);
}
else {
alert("error");
}
});
同步的方法:
var gui = require('nw.gui');
var path = require('path');
var fs = require('fs');
var appPath = path.dirname(process.execPath);
var configFilePath = path.join(appPath, "config.txt");
var data = null;
try {
data = fs.readFileSync(configFilePath , "utf8");
}
catch(ex) {
alert("error");
}
if (data) {
console.log(data);
}
留言
張貼留言