ノードFS – NodeJSにおけるファイルの作成、読み込み、書き込み
ノード FSは、ノードJSのファイルシステムモジュールを表します。以前の投稿で、require()呼び出しを使用してノードJSモジュールをインポートする方法についてすでに議論しました。この投稿を読む前に、”ノードJSのモジュールのエクスポートとインポート”という投稿を読んで、require()呼び出しの使用法をご確認ください。
ノードFS
この投稿では、Node JSプラットフォームの「fs」モジュールについて説明します。FSはファイルシステムの略称です。このモジュールはIOやFileSystemやStreamモジュールとしても知られています。
NodeJSのFSモジュールの投稿要約
-
- Node FSモジュールの紹介
-
- Node JS ファイルの作成
-
- Node JS ファイルへの書き込み
- Node JS ファイルの読み込み
Node FS Moduleについての概要
Node FS モジュールは、ファイルシステムとやり取りし、ファイルの作成、読み込み、削除、更新などの入出力操作を行うための API を提供します。Node の他のモジュールである「npm」「http」などと同様に、Node JS の「fs」も基本的に Node JS プラットフォームに含まれています。Node JS FS モジュールをセットアップするための特別な手順は必要ありません。
ネイティブに日本語で言い換えると、以下のようになります:
“ノードのFSモジュールのインポート”
私たちは単純に、ノードのfsモジュールを私たちのコードにインポートして、IO操作のコードを書き始める必要があります。ノードのfsモジュールをインポートするには、次のようにします。
var fs = require("fs");
この `require()`コールは、Node JSの”fs”モジュールをキャッシュにインポートし、Node FSモジュールのオブジェクトを作成します。これが完了すると、node fsオブジェクトを使用して任意のIO操作を実行できます。${Eclipse_Workspace}がD:\RamWorkspaces\NodeWorkSpaceを指すものと仮定しましょう。これ以降は、この変数を私のEclipseのワークスペースを参照するために使用します。Javaや. NET、C/C++の開発者として、既にいくつかのIOプログラムを学習および書いてきたことを想定しています。IOまたはストリームは2つのタイプがあります。
- Write Stream – To write data to a Stream.
- Read Stream – To read data from a Stream.
Node.jsでファイルを作成する
今度は、Node JS FS APIを使用して新しいファイルを作成する方法について話し合います。
-
- エクリプスIDEでNode JSプロジェクトを作成してください。
前の例からpackage.jsonファイルをコピーし、必要な部分を更新してください。
{
“name”: “filesystem”,
“version”: “1.0.0”,
“description”: “ファイルシステムの例”,
“main”: “filesystem”,
“author”: “JournalDEV”,
“engines”:{
“node”:”*”
}
}
以下の内容を持つJavaScriptファイル、fs-create-file.jsを作成してください。
/**
* ノードFSの例
* ノードJSファイルの作成
*/
var fs = require(“fs”);
var createStream = fs.createWriteStream(“JournalDEV.txt”);
createStream.end();
コードの説明: var fs = require(“fs”)は指定されたNode FSモジュールをキャッシュにロードし、fsというオブジェクトに割り当てるためのrequire()呼び出しです。fs.createWriteStream(filename)呼び出しは、指定されたファイル名で書き込みストリームとファイルを作成するために使用されます。createStream.end()呼び出しは、開いたストリームを終了または閉じます。
fs-create-file.jsを実行する前に、まずファイルシステムプロジェクトの内容を確認し、”JournalDEV.txt”ファイルが存在しないことに気付きます。
${Eclipse_Workspace}/filesystemでコマンドプロンプトを開き、以下の画像に示すようにnodeコマンドを実行して、fs-create-file.jsファイルを実行してください。プロジェクトディレクトリの内容を確認してください。空の「JournalDEV.txt」というファイルが作成されていることに気付きます。
Node JSでファイルに書き込む
私たちはNodeのFS APIを使用して新しいファイルを作成し、その中にデータを書き込むことにします。これは前の例の続きです。
-
- ${Eclipse_Workspace}/filesystemフォルダから以前に作成された「JournalDEV.txt」を削除してください。
以下のコンテンツを持つJavaスクリプトファイル(fs-write-file.js)を作成してください。
/**
* Node FSの例
* Node JSでファイルに書き込む
*/
var fs = require(“fs”);
var writeStream = fs.createWriteStream(“JournalDEV.txt”);
writeStream.write(“こんにちは、JournalDEVのユーザーの皆さん。”);
writeStream.write(“ありがとうございます。”);
writeStream.end();
createStream.write(sometext)呼び出しは、ファイルにテキストを書き込むために使用されます。
コマンドプロンプトを${Eclipse_Workspace}/filesystemで開き、以下に示すようにnodeコマンドを実行してfs-write-file.jsファイルを実行してください。
${Eclipse_Workspace}/filesystemフォルダに移動し、「JournalDEV.txt」を開いてその内容を確認してください。新しいファイルが作成され、そのファイルに一部のデータが書き込まれました。
Node JSでファイルを読む
私たちはNode FS APIを使用して、既存のファイルの内容を開いて読み込み、その内容をコンソールに書き込むことになります。これは以前の例の続きです。ここでは、名前付きのJavaScript関数を使用します。これを理解するために、この例を確認してください。
-
- 以下の内容を持つJava Scriptファイル、fs-read-file1.jsを作成してください。
-
- /**
-
- * ノードFSファイルの読み込み
-
- * ノードJSファイルの読み込み
-
- */
-
- var fs = require(“fs”);
function readData(err, data) {
console.log(data);
}
fs.readFile(‘JournalDEV.txt’, ‘utf8’, readData);
コードの説明:readData()は2つのパラメータを受け取るJavaScript関数です。
err:エラーオブジェクトです。プログラムがファイルのオープンやデータの読み取りに失敗した場合、FSモジュールはこのパラメータにエラーメッセージを書き込みます。
data:データを保持する変数です。
この関数はdataパラメータを取り、そのデータをコンソールに表示します。fs.readFile()はNode JS FS APIです。次の3つのパラメータを取ります。
ファイル名
読み込むファイルデータの形式
JavaScript関数またはJavaScriptの匿名関数
readFile()は、指定した形式(第2パラメータ)で指定したファイル名(第1パラメータ)からデータを読み取り、第3パラメータで指定された関数を使用していくつかの操作を行います。ここでは、第3パラメータとしてプレーンなJavaScript関数を使用しています。次の例でJavaScriptの匿名関数の使用方法を見ていきましょう。この例では、readFile()が”JournalDEV.txt”ファイルからデータを読み取り、コンソールに書き込んでいます。’utf8’形式を使用しない場合、バイナリデータが取得されます。これは数分後に確認します。
${Eclipse_Workspace}/filesystemでコマンドプロンプトを開き、fs-read-file1.jsファイルを実行するためにnodeコマンドを実行してください。これで、コードがファイルを正常に開き、その内容を読み取り、コンソールに書き込んだことが確認できました。
Node.jsでバイナリとしてファイルを読み取る
今回はJavaScriptの匿名関数を使用してファイルからデータを読み込む方法を説明します。この例を見て、理解してください。以前のfs-read-file1.jsの例と似ていますが、匿名関数を使用しています。JavaScriptの匿名関数に慣れていない場合は、JavaScriptのチュートリアルを参照して理解を深めてください。以下の内容のJavaScriptファイル(fs-read-file2.js)を作成してください。
/**
* Node FS File System Module
* Node.js read file example
*/
var fs = require("fs");
fs.readFile('JournalDEV.txt', 'utf8', function(err, data) {
console.log(data);
});
コードの説明:ここでは、readFile()がJavaScriptの匿名関数を使用してファイルからデータを読み取り、そのファイルの内容をコンソールに書き込んでいます。このファイルを実行すると、fs-read-file2.jsの例と同じ出力が得られます。今度は、バイナリ出力を確認するために「utf8」のデータ形式を削除してください。
/**
* Node FileSystem Module
* Node JS Read File Binary Data
*/
var fs = require("fs");
fs.readFile('JournalDEV.txt', function(err, data) {
console.log(data);
});
[anyFSAPIObject] + Press . (dot) + After dot Press (CTRL + Space Bar)