Nodejsでファイル読み込みを簡単に行うサンプル

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

テンプレートファイルや、特定のテキストデータなど、任意のローカルファイルをプログラムで読み込む場合のfs操作を備忘録として書き溜めておきます。

サンプルテキスト

 

同一階層にsample.txtを置いた状態で操作を行います。

open-read-close方式

PHPでのopen-read-closeと同じような感覚でファイル読み込みができます。
データのバイト数などをコントロールしたい場合は、こちらの方法で行います。
 

 

“statSync”でファイルの状態を読み込んでから”readSync”の時に取得したstatのsizeを指定するのがポイントです。
 

さらに、返り値は書きのような配列になっているので、ファイル内容でる0番目を利用しています。
 

readSyncでの取得データ配列
[0] ファイル内容
[1] データの総バイト数
 

||| リファレンス
 

# ファイル情報の読み込み
fs.statSync(“file-path”);
 

下記のようなデータが取得できます。
 

{ dev: 85,
mode: 33188,
nlink: 1,
uid: 0,
gid: 0,
rdev: 0,
blksize: 4194304,
ino: 11307600,
size: 36,
blocks: 8,
atime: Sun Jul 22 2018 07:52:08 GMT+0900 (JST),
mtime: Sun Jul 22 2018 07:10:49 GMT+0900 (JST),
ctime: Sun Jul 22 2018 07:14:54 GMT+0900 (JST),
birthtime: Sun Jul 22 2018 07:14:54 GMT+0900 (JST) }

 

# ファイルオープン
fs.openSync(“file-path” , “mode”)
 

※ファイルパスは、相対パスの場合、”./”を先頭につけないとエラーになるので要注意!
 

# ファイル読み込み
fs.readSync(“open-data” , “read-bytes” , “start-byte-address” , “file-type”);
 

read-bytes : 読み込むバイト数を入力
start-byte-address : 読み込み開始するアドレス
 

# ファイルクローズ
fs.closeSync(“open-data”);
 

きちんと閉じてファイル操作を終了してあげましょう。
 

fileRead一発方式

ファイルの中身を一発で簡易に取得したい場合は、”fileReadSync”関数を使います。
 

PHPで言うところの”file_get_copntents()”関数と同じ感覚です。
 

 

openの場合も同じですが、ファイルの文字エンコードはきちんと指定しなければいけないので、今時の環境であれば、”utf8″に統一して使用するのがいいと思いますが、Excelで出力したcsvファイルなどは、”shift-jis”という問題もまだまだ健在なので、そうした点は注意しましょう。

読み込んだデータの扱い

上記の2つの方法のどちらで読み込んだ場合でも、ファイルを1つのstringとして読み込まれるので、ログデータなどのrecord方式の場合は、改行コードでsplitして配列化してあげましょう。
 

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です