2012-06-10 31 views
5

只要測試NodeJS並仍然學習用JavaScript思考,我如何才能在下面得到這個基本的FileIO操作?NodeJS基本FileIO

這是我想它做的事:

  • 讀取XML文件(讀入內存)
  • 將所有內容複製到從變量
  • 輸出變量
  • 寫XML文件應是一樣的原始文件
var fs = require('fs'); 
var filepath = 'c:\/testin.xml'; 

fs.readFile(filepath, 'utf8', function(err, data) { 
    if(err) { 
     console.error("Could not open file: %s", err); 
    } 
}); 

fs.writeFile('c:\/testout.xml', data, function(err) { 
    if(err) { 
     console.error("Could not write file: %s", err); 
    } 
}); 
+3

您不需要轉義正斜槓。 – ThiefMaster

回答

11

您的代碼存在的問題是您嘗試在讀取之前將讀取的數據寫入目標文件 - 這些操作是異步的。

只需將文件編寫代碼移動到readFile操作的回調:

fs.readFile(filepath, 'utf8', function(err, data) { 
    if(err) { 
     console.error("Could not open file: %s", err); 
     return; 
    } 
    fs.writeFile('c:/testout.xml', data, function(err) { 
     if(err) { 
      console.error("Could not write file: %s", err); 
     } 
    }); 
}); 

另一種選擇是使用readFileSync() - 但這將取決於當你這樣做(例如,如果上是一個壞主意oepration是由用戶的HTTP請求引起的)

var data = fs.readFileSync(filepath, 'utf-8'); 
fs.writeFileSync('c:/testout.xml', data);