サンプルテキスト
001,AAA,
002,BBB,
003,CCC,
004,DDD,
同一階層にsample.txtを置いた状態で操作を行います。
open-read-close方式
PHPでのopen-read-closeと同じような感覚でファイル読み込みができます。 データのバイト数などをコントロールしたい場合は、こちらの方法で行います。var fs = require("fs");
var filename = "./sample.txt";
var stat = fs.statSync(filename);
var fd = fs.openSync(filename , "r");
var resData = fs.readSync(fd , stat.size , 0 , "utf8");
fs.closeSync(fd);
console.log(resData[0]);
"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()"関数と同じ感覚です。var fs = require("fs");
var resData = fs.readFileSync("./sample.txt" , "utf8");
console.log(resData);
openの場合も同じですが、ファイルの文字エンコードはきちんと指定しなければいけないので、今時の環境であれば、"utf8"に統一して使用するのがいいと思いますが、Excelで出力したcsvファイルなどは、"shift-jis"という問題もまだまだ健在なので、そうした点は注意しましょう。
読み込んだデータの扱い
上記の2つの方法のどちらで読み込んだ場合でも、ファイルを1つのstringとして読み込まれるので、ログデータなどのrecord方式の場合は、改行コードでsplitして配列化してあげましょう。var datas = resData.split("\n");
0 件のコメント:
コメントを投稿