5

NodeJS をテストして、まだ JavaScript で考えることを学んでいますが、以下の基本的な 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);
    }
});
4

1 に答える 1

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()、それをいつ行うかによっては、それは悪い考えです (たとえば、操作がユーザーからの HTTP 要求によって引き起こされた場合)。

var data = fs.readFileSync(filepath, 'utf-8');
fs.writeFileSync('c:/testout.xml', data);
于 2012-06-10T00:29:02.837 に答える