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'
--
0 件のコメント:
コメントを投稿