[nodejs] ライブラリ「fs」調査結果

2015年10月19日

Nodejs テクノロジー プログラミング

https://nodejs.org/api/fs.html#fs_fs_write_fd_buffer_offset_length_position_callback ライブラリのリファレンスページを分かりやすくまとめておきたかったので、調査した結果をメモしておきます。

ファイル操作

Syncが付いていないものは非同期処理を行う関数で、それ以外は同期処理を行う。

ファイル名の変更

fs.rename(oldPath, newPath, callback) fs.renameSync(oldPath, newPath)
var fs = require("fs"); fs.readFile("%対象ファイル%","utf8",function(err,data){ if(err){throw err;} console.log(data); # Jsonデータの場合は、パースするとobjectに変換できる。 var json = JSON.parse(data); });

ファイルファイルの内容を指定バイト数以降を切り捨てる

fs.ftruncate(fd, len, callback) fs.ftruncateSync(fd, len) fs.truncate(path, len, callback) fs.truncateSync(path, len)
var fs = require("fs"); var res = fs.truncateSync("hoge.txt",10); console.log(res); #hoge.txt abcdefghijklmnopqrstuvwxyz ↓ abcdefghij

ファイルuid,gidの変更

fs.chown(path, uid, gid, callback) fs.chownSync(path, uid, gid) fs.fchown(fd, uid, gid, callback) fs.fchownSync(fd, uid, gid) fs.lchown(path, uid, gid, callback) fs.lchownSync(path, uid, gid)
var fs = require("fs"); fs.chown("hoge.txt","apache","apache");

ファイル権限の変更

fs.chmod(path, mode, callback) fs.chmodSync(path, mode) fs.fchmod(fd, mode, callback) fs.fchmodSync(fd, mode) fs.lchmod(path, mode, callback) fs.lchmodSync(path, mode)
var fs = require("fs"); fs.chmodSync("hoge.txt","0400");

対象ファイル・フォルダの情報表示

fs.stat(path, callback) fs.lstat(path, callback) fs.fstat(fd, callback) fs.statSync(path) fs.lstatSync(path) fs.fstatSync(fd)
var fs = require("fs"); var res = fs.statSync("hoge"); console.log(res); //「hoge」フォルダ情報 { dev: 19, mode: 16895, nlink: 1, uid: 500, gid: 500, rdev: 0, blksize: 4096, ino: 3577, size: 170, blocks: 0, atime: Mon Oct 12 2015 01:29:06 GMT+0000 (UTC), mtime: Mon Oct 12 2015 01:23:37 GMT+0000 (UTC), ctime: Mon Oct 12 2015 01:23:37 GMT+0000 (UTC) }

--

fs.link(srcpath, dstpath, callback) fs.linkSync(srcpath, dstpath)
--

シンボリックリンク設定

fs.symlink(destination, path[, type], callback) fs.symlinkSync(destination, path[, type])
var fs = require("fs"); fs.symlinkSync("hoge.txt","hoge");

シンボリックリンクのリンク元を取得

fs.readlink(path, callback) fs.readlinkSync(path) fs.realpath(path[, cache], callback) fs.realpathSync(path[, cache])
# ファイル名の表示 var fs = require("fs"); var res = fs.readlinkSync("hoge.ln"); console.log(res); #階層の表示 var fs = require("fs"); var res = fs.realpathSync("hoge.ln"); console.log(res);

ファイル削除

fs.unlink(path, callback) fs.unlinkSync(path)
var fs = require("fs"); fs.unlink("hoge.txt"); ファイルとシンボリックリンクしか削除できません。 フォルダ削除は「rmdir」を使ってください。

ディレクトリ操作

ディレクトリ作成

fs.mkdir(path[, mode], callback) fs.mkdirSync(path[, mode])
var fs = require("fs"); fs.mkdir("%対象フォルダ%",%パーミッション%,function(){/*CallBack関数*/}); ※注意点 pathには、複数の深度を登録できません。 複数深度に対応するにはcallbackで対応するといいでしょう。

ディレクトリ削除

fs.rmdir(path, callback) fs.rmdirSync(path)
var fs = require("fs"); fs.rmdir("hoge"); ※注意点 フォルダにファイルなどが入っている場合は削除できません。 安全性を考慮されてますが、強制削除がないと若干使いづらいですね。

フォルダの内容一覧を取得

fs.readdir(path, callback) fs.readdirSync(path)
var fs = require("fs"); var res = fs.readdirSync("hoge"); console.log(res); ※再帰的一覧の取得はできないので、callbackなどを使って関数を作ってください。 カレントディレクトリから拡張子csvのファイル一覧を取得するスニペット

ファイルオープン(ファイル操作前に実行)

fs.open(path, flags[, mode], callback) fs.openSync(path, flags[, mode])
--

ファイルクローズ(ファイル操作後に実行)

fs.close(fd, callback) fs.closeSync(fd)
--

--

fs.utimes(path, atime, mtime, callback) fs.utimesSync(path, atime, mtime) fs.futimes(fd, atime, mtime, callback) fs.futimesSync(fd, atime, mtime)
:--

--

fs.fsync(fd, callback) fs.fsyncSync(fd)
--

ファイル書き込み操作(open,closeと併用)

fs.write(fd, buffer, offset, length[, position], callback) fs.write(fd, data[, position[, encoding]], callback) fs.writeSync(fd, buffer, offset, length[, position]) fs.writeSync(fd, data[, position[, encoding]]) --

--

fs.read(fd, buffer, offset, length, position, callback) fs.readSync(fd, buffer, offset, length, position)
--

ファイルデータの読み取り

fs.readFile(filename[, options], callback) fs.readFileSync(filename[, options])
var fs = require("fs"); var res = fs.readFileSync("hoge.txt","utf8"); console.log(res); optionで文字エンコードを指定しないと

ファイルにデータの書き込み

fs.writeFile(filename, data[, options], callback) fs.writeFileSync(filename, data[, options])

ファイルにデータを追記

fs.appendFile(filename, data[, options], callback) fs.appendFileSync(filename, data[, options])
var fs = require("fs"); var data = { smartphone:{ iPhone:"Apple", Android:"Google", Blackberry:"rim" }, pc:{ windows:"Microsoft", mac:"Apple" }, printer:[ "epson", "canon", "hp" ] }; fs.writeFile("data.json",JSON.stringify(data,null," "));

--

fs.watchFile(filename[, options], listener) fs.unwatchFile(filename[, listener]) fs.watch(filename[, options][, listener]) Caveats Availability Filename Argument
--

ファイル・フォルダの存在確認

fs.exists(path, callback) fs.existsSync(path) var fs = require("fs"); if(fs.existsSync("hoge.txt")){ consolo.log("hoge.txt あるよ"); } else{ console.log("hoge.txt ないよ"); } ファイルもフォルダもチェックできる。 if文で判定する場合は、非同期ではなくSyncをつけて同期処理で行なってください。

--

fs.access(path[, mode], callback) fs.accessSync(path[, mode]) Class: fs.Stats Stat Time Values
--

--

fs.createReadStream(path[, options]) Class: fs.ReadStream Event: 'open' fs.createWriteStream(path[, options]) Class: fs.WriteStream Event: 'open' --

--

file.bytesWritten Class: fs.FSWatcher watcher.close() Event: 'change' Event: 'error'
--

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。