前準備
環境
OS:Windows 11 Home 64 ビット オペレーティング システム
CPU:11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz 3.00 GHz
RAM:32.0 GB
Node.js:Node.js v20.4.0.
サンプルとなるテキストファイルを作成する
sample.txt
Line_001:1行目
Line_002:2行目
Line_003:3行目
Line_004:4行目
Line_005:5行目
ログ出力用関数を準備する
fDateTime.js
module.exports = function() {
//formatted DateTime
date = new Date();
const yyyy = date.getFullYear();
const mm = ('0' + (date.getMonth() + 1)).slice(-2);
const dd = ('0' + date.getDate()).slice(-2);
const hh = ('0' + date.getHours()).slice(-2);
const mi = ('0' + date.getMinutes()).slice(-2);
const ss = ('0' + date.getSeconds()).slice(-2);
const ms = ('0' + date.getMilliseconds()).slice(-3);
return yyyy + mm + dd + hh + mi + ss + '.' + ms;
}
ファイル取得(非同期・一括)fs.ReadFile を確認
機能を実装する
fs_readFile.js
const fDateTime = require('.\\fDateTime.js');
const FILE = "data\\sample.txt";
const ENCODING = "utf-8";
console.log("ファイル取得(非同期・一括)fs.ReadFile:"+FILE);
const fs = require("fs");
fs.readFile(FILE, ENCODING, (err, data) => {
if (err) throw err;
console.log(data);
});
動作させてみる
振る舞い確認用のログを付加する
fs_readFile_addDateTimeLog.js
const fDateTime = require('.\\fDateTime.js');
const FILE = "data\\sample.txt";
const ENCODING = "utf-8";
console.log("ファイル取得(非同期・一括)fs.ReadFile:"+FILE);
console.log("main start:"+fDateTime());
const fs = require("fs");
fs.readFile(FILE, ENCODING, (err, data) => {
console.log("readFile Callback start:"+fDateTime());
if (err) throw err;
console.log(data);
console.log("readFile Callback end :"+fDateTime());
});
console.log("main end :"+fDateTime());
動作させて非同期の振る舞いを確認する
ファイル取得(非同期・指定バイト分を取得)fs.read を確認
機能を実装する
fs_read.js
const fDateTime = require('.\\fDateTime.js');
const FILE = "data\\sample.txt";
const ENCODING = "utf-8";
console.log("ファイル取得(非同期・指定バイト分を取得)fs.read:"+FILE);
const BUFF_SIZE = 200;
const BUFF_OFFSET = 0;
const READ_BYTES_LENGTH = 18;
const READ_POSITION = 20;
const fs = require("fs");
fs.open(FILE, "r", (err, fd) => {
if (err) throw err;
const buff = Buffer.alloc(BUFF_SIZE);
fs.read(fd, buff, BUFF_OFFSET, READ_BYTES_LENGTH, READ_POSITION, (err, bytesRead, buffer) => {
if (err) throw err;
console.log(buffer.toString(ENCODING, 0, READ_BYTES_LENGTH));
fs.close(fd, (err) => {
if (err) throw err;
});
});
});
動作させてみる
振る舞い確認用のログを付加する
fs_read_addDateTimeLog.js
const fDateTime = require('.\\fDateTime.js');
const FILE = "data\\sample.txt";
const ENCODING = "utf-8";
console.log("ファイル取得(非同期・指定バイト分を取得)fs.read:"+FILE);
console.log("main start:"+fDateTime());
const BUFF_SIZE = 200;
const BUFF_OFFSET = 0;
const READ_BYTES_LENGTH = 18;
const READ_POSITION = 20;
const fs = require("fs");
fs.open(FILE, "r", (err, fd) => {
console.log("open Callback start:"+fDateTime());
if (err) throw err;
const buff = Buffer.alloc(BUFF_SIZE);
fs.read(fd, buff, BUFF_OFFSET, READ_BYTES_LENGTH, READ_POSITION, (err, bytesRead, buffer) => {
console.log("read Callback start:"+fDateTime());
if (err) throw err;
console.log(buffer.toString(ENCODING, 0, READ_BYTES_LENGTH));
fs.close(fd, (err) => {
console.log("close Callback start:"+fDateTime());
if (err) throw err;
console.log("close Callback end :"+fDateTime());
});
console.log("read Callback end :"+fDateTime());
});
console.log("open Callback end :"+fDateTime());
});
console.log("main end :"+fDateTime());