objectize-fs
なにこれ
ファイル・ディレクトリを抽象化してNode.js APIで扱うやつ。
JScriptのFileSystemObjectとは一切関係ない。
使い方
# v1までは仕様がコロコロ変わるため $ npm i -E objectize-fs
const Directory File ZIP RAR Utility = ; // $ rm *.txtconst dir = await './';const files = await dir;forlet file of files iffileext==='txt' await file;
API
- 属性は、書き込み例のあるもの以外は読み取り専用。
- いくつかの関数は第二引数で再利用するStatsを受け取れる。
Directory, File共通
Constractor#copy(outputPath [, overwrite])
自身を引数1パスにコピーする。
コピーした実体から作ったインスタンスを引数に解決するpromiseを返す。
引数2がtrueなら上書きを許可する。
// dir => dir, dir2const dir = 'dir';const dir2 = await dir; // fileA.ext => fileA.ext, fileB.extconst fileA = await 'fileA.ext';const fileB = await file;
Constractor#date()
自身の日付情報を含むオブジェクトを取得する。
取得したオブジェクトを引数に解決するpromiseを返す。
// date {a, m, c, birth}const date = await dir;
Constractor#delete()
自身の実体を削除する。
削除後に解決するpromiseを返す。
await instance;
Constractor#getParentDirectory()
自身の親ディレクトリのDirectoryインスタンスを取得する。 取得したインスタンスを引数に解決するpromiseを返す。
const parentDir = await instance;
- Alias
- Constractor#getParentDir()
Constractor#isLive()
自身の実体が存在するかのbooleanを取得する。
取得したbooleanを引数に解決するpromiseを返す。
const bool = await instance;
Constractor#move(dirPath [, overwrite])
自身の実体を引数パスのディレクトリに移動する。
引数2がtrueなら上書きを許可する。
移動後に解決するpromiseを返す。
// bar => foo/barawait dir; // filename => foo/filenameawait file;
注意
inodeナンバーが変化する。
Constractor#open()
自身の実体を開く。
子プロセスを引数に解決するpromiseを返す。
const child_process = await dir; const child_process = await file;
Constractor#rename(string [, overwrite])
自身と実体を引数文字列に改名する。
自身を引数に解決するpromiseを返す。
await dir; await file; // overwriteawait file;
Constractor#trash()
自身の実体をゴミ箱に移動する。
移動後に解決するpromiseを返す。
await dir; await file;
Constractor#zip([path])
自身の実体を圧縮する。
圧縮した.zipファイルのZIPインスタンスを引数に解決するpromiseを返す。
// dir => dir.zipconst zip = await dir; // dir => hoge.zipconst zip = await dir; // file.ext => file.zipconst zip = await file; // file.ext => hoge.zipconst zip = await file;
Constractor#base
読み取り専用。
自身の親ディレクトリの絶対パス文字列。
instancebase; // Win: "C:\\Users\\username"
Constractor#name
読み取り専用。
自身のファイル・ディレクトリ名の文字列。
dirname; // "dirname"filename; // "filename.ext"
Constractor#path
自身の絶対パスの文字列。
dirpath; // Win: "C:\\Users\\username\\dirname" filepath; // Win: "C:\\Users\\username\\filename.ext"
Directory
options
いくつかの関数は引数に渡すオブジェクトで挙動を制御できる。
key | type | description |
---|---|---|
directory | boolean | 結果にDirectoryインスタンスを含むか。 |
file | boolean | 結果にFileインスタンスを含むか。 |
filter | function | 走査中のインスタンス毎にそれを引数に実行し、trueを返したものを結果に含む。 |
greedy | boolean | 一部メソッドのみ。下位ディレクトリに対して同じ処理を繰り返すか。 |
global | boolean | 一部メソッドのみ。全てのコンテンツを走査して結果を配列で取得するか。 |
new Directory(dirpath [, config])
引数パスのディレクトリを基にインスタンスを作る。
作成したインスタンスを引数に解決するpromiseを返す。
const dir = await 'path'; // configconst dir = await 'path' stats: fs;
Directory.make(path [, mode])
引数1パスのディレクトリが存在しなければ作成する。
作成したディレクトリのDirectoryインスタンスを引数に解決するpromiseを返す。
const dir = await Directory;
- 引数2について
Directory#cd()
自身の実体をプロセスのカレントディレクトリにする。
変更後に解決するPromiseを返す。
await dir;
Directory#clear()
自身の実体が含むファイル・ディレクトリを全て削除する。
削除後に解決するpromiseを返す。
await dirclear;
Directory#get(string [, options])
自身が直接含む、引数文字列と一致する名前のファイル・ディレクトリのインスタンスかnullを取得する。
取得した結果を引数に解決するpromiseを返す。
const file = await dir; // optionsconst dir_foobar_empty = await dir;
Directory#getContents([options])
自身が直接含むファイル・ディレクトリインスタンスを配列で取得する。
取得した配列を引数に解決するpromiseを返す。
const arr = await dir; // optionsconst fileArr_deep_under1KB = await dir;
Directory#getDirectories([options])
自身が含むディレクトリインスタンスを配列で取得する。
取得した配列を引数に解決するpromiseを返す。
const dirs = await dir; // optionsconst dirArr_deep_over1KB = await dir;
- Alias
- Directory#getDirs()
Directory#getFiles(greedy)
自身が含むファイルインスタンスを配列で取得する。
取得した配列を引数に解決するpromiseを返す。
const files = await dir; // optionsconst fileArr_deep_txt = await dir;
Directory#has(string [, options])
自身が引数文字列名のファイル・ディレクトリを直接含んでいるか調べる。 結果のbooleanを引数に解決するpromiseを返す。
const bool = await dir; // optionsconst hasSecretTextFile = await dir;
Directory#list()
自身が直接含んでいるファイル・ディレクトリ名の配列を取得する。
取得した配列を引数に解決するpromiseを返す。
const nameArr = await dir;
Directory#search(rule, [, options])
自身の含む、引数1の条件と一致する名前を持つファイル・ディレクトリインスタンスを取得する。
取得したインスタンスかnullを引数に解決するpromiseを返す。
const file = await dir;const dir = await dir;const file_txt = await dir; // optionsconst dirArr_deep_notEmpty = await dir;
引数1
- string: ファイル名との完全一致。
- regexp: ファイル名とのmatch.
- function: インスタンスを引数に実行し、trueを返したもの。
Directory#size()
自身の含むファイル・ディレクトリの総サイズを数値で取得する。
取得した数値を引数に解決するpromiseを返す。
const size = await dirsize;
Directory#isDirectory
dirisDirectory; // true
- Alias
- Directory#isDir
File
new File(filepath [, config])
引数パスのファイルを基にfileインスタンスを作る。
作ったインスタンスを引数に解決するpromiseを返す。
const file = await './filename.ext'; // configconst file = await './filename.ext' stats: fs;
File.make(path, content [, filedataoptions])
引数1のパスに、引数2の内容でファイルを作成する。
作成したファイルのFileインスタンスを引数に解決するpromiseを返す。
const file = await File;
File#autoExt()
自身の実体から拡張子を推測して、可能なら改名する。
なにもしなければ自身を、改名していれば新しいインスタンスを引数に解決するpromiseを返す。
// filename => filename.extawait file; // hoge => hoge.jpgconst image = await file;
File#read([encode])
自身の内容を文字列で取得する。
取得した文字列を引数に解決するpromiseを返す。
const str = await file;
File#size()
自身のファイルサイズを数値で取得する。
取得した数値を引数に解決するpromiseを返す。
const size = await filesize;
File#write(string [, encode])
自身の内容を引数の文字列で書き換える。
書き換え後に解決するpromiseを返す。
await file;
File#basename
自身の拡張子を除いたファイル名の文字列。
const file = await 'filename.ext';filebasename; // "filename"
File#ext
自身の拡張子の文字列。
const file = await 'filename.ext';fileext; // "ext"
File#isFile
fileisFile; // true
Image
Fileを継承している。
- 対応形式
- bmp, jpg, png
new Image()
引数パスの画像ファイルを元にImageインスタンスを作る。
作ったインスタンスを引数に解决するpromiseを返す。
const image = await 'hoge.jpg';
Image.make(path, url or buffer)
引数1のパスに、引数2のURLかbufferを元に画像ファイルの実体を作成する。
作成した画像ファイルのImageインスタンスを引数に解决するpromiseを返す。
const image = await Image;
Image#output(path, options)
引数1パスに、引数2の設定で画像ファイルの実体を作成する。
作成した画像ファイルのImageインスタンスを引数に解决するpromiseを返す。
// png, greyscale, auto*250pxconst imageB = await imageA;
optionsについては以下を参照。
Image#isImage
imageisImage; // true
JSON
Fileを継承している。
new JSON(filepath [, stats])
引数パスの.jsonファイルを基にJSONインスタンスを作る。
作ったインスタンスを引数に解決するpromiseを返す。
const json = await 'hoge.json';
JSON.make(path [, object])
引数1パスに.jsonファイルを作成する。
引数2にオブジェクトが渡されていれば.jsonファイルに反映する。
作成したファイルのJSONインスタンスを引数に解決するpromiseを返す。
// => {}const json = await JSON; // => {"foo":"bar"}const json = await JSON;
JSON#read()
自身の内容をオブジェクトで取得する。
取得したオブジェクトを引数に解決するpromiseを返す。
const obj = await json;
JSON#write(object)
引数オブジェクトを基に自身の実体へ書き込む。
書き込み後に解決するpromiseを返す。
await json;
JSON#isJSON
jsonisJSON; // true
JSON#space
自身の整形に使う値。
jsonspace = 2;/*{ "key": "value"}*/ jsonspace = '\t';/*{ "key": "value"}*/
ZIP
Fileを継承している。
new ZIP(filepath [, stats])
引数パスの.zipファイルを基にZIPインスタンスを作る。
作ったインスタンスを引数に解決するpromiseを返す。
const zip = await 'hoge.zip';
ZIP.make(...file or dir [, outputZipPath])
引数のFile, Directoryインスタンスの実体を圧縮する。
圧縮したファイルのZIPインスタンスを引数に解決するpromiseを返す。
// file.ext => file.zipconst zip = await ZIP; // file.ext & dir => hoge.zipconst zip = await ZIP;
ZIP#unzip(outputDirPath)
自身の実体を同じディレクトリか引数パスのディレクトリへ展開する。
展開先のDirectoryインスタンスを引数に解決するpromiseを返す。
// hoge.zip => ...const dir = await zip; // hoge.zip => output/...const dir = await zip;
ZIP#list()
自身の実体が持つコンテンツ一覧を配列で取得する。
取得した配列を引数に解決するpromiseを返す。
// [...'file.ext', 'dir/']const arr = await zip;
ZIP#isZIP
zipisZIP; // true
RAR
Fileを継承している。
new RAR(filepath [, stats])
引数パスの.rarファイルを基にRARインスタンスを作る。
作ったインスタンスを引数に解決するpromiseを返す。
const rar = await 'hoge.rar';
RAR#extract(targetContent or [..targetContent], outputDirPath [, password])
自身の実体から引数1のコンテンツを、引数2のパスのディレクトリへ展開する。
展開先のDirectoryインスタンスを引数に解決するpromiseを返す。
// hoge.rar => output/dirinrar/fileconst dir = await rar; // multiconst dir = await rar;
RAR#extractAll(outputDirPath [, password])
自身の実体から全てのコンテンツを、引数1のパスのディレクトリへ展開する。
展開先のDirectoryインスタンスを引数に解決するpromiseを返す。
// hoge.rar => output/...const dir = await rar;
RAR#list([password])
自身の実体が持つコンテンツ一覧を配列で取得する。
取得した配列を引数に解決するpromiseを返す。
// [...'file.ext', 'dir/']const arr = await rar;
RAR#isRAR
rarisRAR; // true
Utility
コンストラクタじゃないよ。
Utilyti.download(url, filepath)
引数1のURLからファイルをダウンロードして引数2のパスに保存する。
保存したFileインスタンスを引数に解決するpromiseを返す。
const file = await Utility;
Utility.getInstance(path [, stats])
引数パスを基に対応するインスタンスを作る。
作ったインスタンスを引数に解決するpromiseを返す。
// dir or fileconst instance = await Utility;
Utility.getDesktop(), getHomeDir(), getTempDir()
それぞれデスクトップ・ユーザー・テンポラリディレクトリのDirectoryインスタンスを作る。
作ったインスタンスを引数に解決するpromiseを返す。
const dir_desktop = await Utility;const dir_home = await Utility;const dir_Temp = await Utility;
Utility.cache
キャッシュを管理するオブジェクト。
詳しくはhoneo/lru-cacheを参照。
// default 1000 => 300Utilitycachecapacity = 300; // default 1h => 3mUtilitycacheexpire = 1000*60*3;