この記事は最終更新日から1年以上が経過しています。
はじめに
アプリ内でディレクトリを作る、となった場合、存在有無は?階層構造は?存在してた場合は?というようなことを考えなくてはならないわけですが、
Node.jsではFileReadとFileReadSyncみたいに、Syncがついているものとついていないものがあります。
やることは同じなんですがどう違うかというと非同期か同期的に実行されるかで、Sync(同期的)は使わないほうがよいとされています。
FileIOとかは時間がかかるので同期的にやると処理が遅くなってしまうからです。つまりSyncを使うことはNodejserにとって敗北。
なので、ファイルの存在確認の説明書を見ると
fs.exists(path, callback) [deprecate]
fs.existsSync(path)
となっています。
つまりSyncは使えるけど非同期の存在確認は非推奨。
これは非同期処理に於いて、その時点のファイル存在確認ってどの時点の存在確認?という意味です。
つまり存在確認なんてするだけ無意味でそんなもん気にしないんだよ、っていうメッセージである。というおはなしでした。
概要
module.exports.makeDir = (path)-> new Promise (f, r)-> path = path[0...-1] if path.match("/$") fs.mkdir path, (e)-> if e? if e.code == 'ENOENT' helper.makeDir path.split("/")[0...-1].join("/") .then (v)-> helper.makeDir path .then (v)-> f() .catch (e)-> r e .catch (e)-> r e else r e else f() |
として
helper.makeDir "po/bag/asdf/asdf/fe/fe/asdf/efe/sasdf/efda/sdfe/fa/" .then (v)-> console.log v .catch (e)-> console.log e |
とかやるとできます。
おわりに
「PHPは なければその階層まで勝手に作る」と言われました。。。
http://php.net/manual/ja/function.mkdir.php
この記事を書いた人
- 和服とvapeとСистемаと醗酵とたまごふわふわとカッティングシェイプスとジャージークラブとjuke/fwkに傾倒する人です
最近書いた記事
- 2019.10.17ES2019で追加されたあれこれを使ってみる
- 2019.09.20JavaScript で安全に扱える最大整数
- 2019.07.24Gitでハッシュ値指定が重複したらどうなるのか
- 2019.07.09ハッシュは何に使えるのか