6-2 Node.jsファイルモジュール
3922 ワード
Node.js内蔵のfsモジュールはファイルシステムモジュールで、ファイルの読み書きを担当しています.
他のすべてのJavaScriptモジュールとは異なり、fsモジュールは非同期の方法を同時に提供している.
非同期的な方法とは何かを振り返ってみましょう. JavaScriptのシングルスレッドモデルのため、IO操作を行う場合、JavaScriptコードは待つ必要がなく、コールバック関数に着信した後、後続のJavaScriptコードを実行し続ける. で同期されたIO動作は、リターン待ち関数が必要である.//ネットワークの消費時間に応じて、関数は数十ミリ秒から数秒まで実行される.
非同期ファイル
非同期読取ファイルは、fsモジュールにおけるreadFile方法を使用する.
マニュアルの住所https://nodejs.org/api/fs.html#fs_fs_readfile_file_optionscalback
少なくとも二つのパラメータが入ってきます. ファイルパス コールバック方法 まずsample.txtテキストを作成します.内容は以下の通りです.
標準的な非同期読取モードに加えて、fsも対応する同期読取関数を提供する.同期読み出しの関数は非同期関数と比較してSync拡張子が一つ多くなり、コールバック関数を受信せずに、関数は直接結果を返します.
ケース
データをファイルに書き込むのはfs.writeFile()で実現します.
文書の住所https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_optionscalback writeFile()のパラメータは、ファイル名、データ、およびコールバック関数の順である. 入力されたデータがStringであれば、デフォルトではUTF-8で符号化されてテキストファイルに書き込まれ、着信パラメータがBufferであればバイナリファイルに書き込まれる. コールバック関数は成功かどうかだけに関心があるので、一つのerrパラメータだけが必要です. ファイルを同期して書きます
同期書込みファイルはfs.writeFileSync()により実現されます.
文書の住所https://nodejs.org/api/fs.html#fs_fs_writefilesync_file_data_options
ファイルサイズ、作成時間などの情報を得るためには、fs.stat()を使って、Statオブジェクトに戻ります.ファイルやディレクトリの詳細を教えてください.
fsモジュールにおいて、同期方法を提供するのは、使用を容易にするためである.私達は一体非同期の方法を使うべきですか?それとも同期の方法を使うべきですか?
Node環境で実行されるJavaScriptコードはサーバーエンドコードであるため、ほとんどはサーバの運行期間において業務ロジックのコードを繰り返し実行する必要があり、非同期コードを使用しなければならない.
サーバー起動時に設定ファイルを読み込む必要がある場合や、終了時にステータスファイルに書き込む必要がある場合は、同期コードを使用することができます.これらのコードは起動時と終了時に一回だけ実行され、サーバの正常な動作に影響を与えないためです.
他のすべてのJavaScriptモジュールとは異なり、fsモジュールは非同期の方法を同時に提供している.
非同期的な方法とは何かを振り返ってみましょう.
// json
$.getJSON('http://example.com/ajax', function (data) { console.log('IO ...');});
console.log(' IO ...');
// json
var data = getJSONSync('http://example.com/ajax');
同期動作の利点は、コードが簡単で、プログラムがIO操作を待つことであり、待ち時間内に他のイベントに応答できないことである.非同期読み出しはIO操作を待つ必要はないが、コードが面倒である.非同期ファイル
非同期読取ファイルは、fsモジュールにおけるreadFile方法を使用する.
マニュアルの住所https://nodejs.org/api/fs.html#fs_fs_readfile_file_optionscalback
少なくとも二つのパラメータが入ってきます.
, 。
, 。
リードスクリプトを作成するfs.js//
const FS = require('fs');
//
FS.readFile('sample.txt', 'utf-8', function (err, data) {
console.log("
======
");
//
if (err) {
console.log(err);
//
} else {
console.log(data.toString());
}
console.log("
");
});
// ,err null,data String。
// ,err data
// ,err ,data undefined。
// Node.js : , 。 。
ファイルを同期します標準的な非同期読取モードに加えて、fsも対応する同期読取関数を提供する.同期読み出しの関数は非同期関数と比較してSync拡張子が一つ多くなり、コールバック関数を受信せずに、関数は直接結果を返します.
ケース
var fs = require('fs');var data = fs.readFileSync('sample.txt', 'utf-8');
console.log(data);
非同期でファイルを書くデータをファイルに書き込むのはfs.writeFile()で実現します.
文書の住所https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_optionscalback
var fs = require('fs');
var data = 'Hello, Node.js';
fs.writeFile('output.txt', data, function(err) {
if (err) {
console.log(err);
} else {
console.log('ok.');
}
});
同期書込みファイルはfs.writeFileSync()により実現されます.
文書の住所https://nodejs.org/api/fs.html#fs_fs_writefilesync_file_data_options
var fs = require('fs');
var data = 'Hello, Node.js';
fs.writeFileSync('output.txt', data);
ファイル情報statを取得するファイルサイズ、作成時間などの情報を得るためには、fs.stat()を使って、Statオブジェクトに戻ります.ファイルやディレクトリの詳細を教えてください.
var fs = require('fs');
fs.stat('sample.txt', function(err, stat) {
if (err) {
console.log(err);
} else {
// :
console.log('isFile: ' + stat.isFile());
// :
console.log('isDirectory: ' + stat.isDirectory());
//
if (stat.isFile()) {
// :
console.log('size: ' + stat.size);
// , Date :
console.log('birth time: ' + stat.birthtime);
// , Date :
console.log('modified time: ' + stat.mtime);
}
}
});
statにも同期の関数statSyncがあります.var fs = require('fs');
var data = fs.statSync('sample.txt');
console.log(data);
非同期fsモジュールにおいて、同期方法を提供するのは、使用を容易にするためである.私達は一体非同期の方法を使うべきですか?それとも同期の方法を使うべきですか?
Node環境で実行されるJavaScriptコードはサーバーエンドコードであるため、ほとんどはサーバの運行期間において業務ロジックのコードを繰り返し実行する必要があり、非同期コードを使用しなければならない.
サーバー起動時に設定ファイルを読み込む必要がある場合や、終了時にステータスファイルに書き込む必要がある場合は、同期コードを使用することができます.これらのコードは起動時と終了時に一回だけ実行され、サーバの正常な動作に影響を与えないためです.