2012-06-10 25 views
5

Chỉ cần kiểm tra NodeJS và vẫn học cách suy nghĩ trong javascript, làm thế nào tôi có thể thực hiện thao tác FileIO cơ bản dưới đây để làm việc?NodeJS FileIO cơ bản

Dưới đây là những gì tôi muốn nó phải làm:

  • đọc tập tin XML (đọc vào bộ nhớ)
  • Đặt tất cả nội dung vào một biến
  • tập tin Write XML từ biến
  • Output nên được giống như tập tin gốc
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

Bạn không cần phải thoát khỏi dấu gạch chéo về phía trước. – ThiefMaster

Trả lời

11

Vấn đề với mã của bạn là bạn cố ghi dữ liệu bạn đã đọc vào tệp đích trước khi nó được đọc - những hoạt động đó không đồng bộ.

Đơn giản chỉ cần di chuyển mã tập tin văn bản vào callback của hoạt động 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); 
     } 
    }); 
}); 

tùy chọn khác sẽ được sử dụng readFileSync() - nhưng đó sẽ là một ý tưởng tồi tùy thuộc vào khi bạn làm điều đó (ví dụ như nếu oepration là do yêu cầu HTTP từ người dùng)

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