Node.jsでのディレクトリ・ファイル操作方法まとめ
【概要】Node.jsでのディレクトリとファイルの操作方法についてまとめます。参考としてNuxt.jsでのzipファイルの投稿方法については以下のドキュメントにまとめているので、参考にしてみて下さい。Nuxt.jsでzipファイルをアップロードする方法【初期設定】1. multerとfs-extraとadm-zipをインストールするnpm i multer fs-extra adm-zip2. Node.jsにてmulterとfs-extraとadm-zipを読み込むconst fs require('fs-extra');const multer require('multer');const multerStorage multer.diskStorage({ destination (req, file, cb) { cb(null, '/static'); }, filename (req, file, cb) { cb(null, file.originalname); }});const upload multer({ storage: multerStorage });const admZip require('adm-zip');※ 「multer.diskStorage」メソッドのデフォルト設定では投稿されたzipファイル名がランダムな文字列で保存されます。元のファイル名で保存する場合の処理を記述しているので、不要な場合はメソッド内部で設定されている「filename」部分は削除して下さい。【ディレクトリ確認】・構文fs.existsSync(検索対象パス);存在する場合には「true」を返し、存在しない場合は「false」を返します。・例文下記ではstatic/uploadディレクトリが存在確認をしております。if (fs.existsSync('./static/upload')) { console.log('ディレクトリが存在します。');} else { console.log('ディレクトリは存在しません。');}【zipファイル解凍】・構文let zip new admZip(zipファイルパス);zip.extractAllTo(解凍先のパス, true);先ず、「admZip」メソッドの引数にzipファイルのパスを記述します。「zip.extractAllTo」メソッドで指定したパス先に解凍します。・例文let zip new admZip('./static/zip/sample.zip');zip.extractAllTo('./static/upload/', true);上記は「/static/zip」配下に存在する「sample.zip」を「/static/tmp/」配下に解凍します。【ディレクトリ作成】・構文fs.mkdir(作成対象のディレクトリパス);・例文fs.mkdir('./static/tmp/');staticディレクトリ配下にtmpディレクトリを作成します。【ディレクトリ同期】・構文fs.copySync(同期元パス, 同期先パス);同期元のファイル・ディレクトリが第2引数に設定したパスに同期されます。・例文fs.copySync('./static/tmp/sample', './static/upload/sample');上記は「/static/tmp/sample」配下のディレクトリ・ファイルを「/static/upload/sample」に同期させます。よって、どちらのsampleディレクトリも同じ内容になります。筆者はzipファイル解凍後に、中身のバリデーション等を行う際に使います。【ディレクトリ削除】・構文fs.removeSync(削除対象ディレクトリのパス);・例文fs.removeSync('./static/tmp/sample');上記は「/static/tmp/sample」ディレクトリを削除します。【ファイル削除】・構文fs.unlink(削除対象のファイルパス, (err) { if (err) throw err; console.log(削除対象のファイルパス + ' was deleted');});※ 上記はerrのcatchとlog出力を行っており、不要な場合は削除して下さい。・例文fs.unlink('./static/zip/sample.zip', (err) { if (err) throw err; console.log('./static/zip/sample.zip was deleted');});上記は「/static/zip/sample.zip」を削除しております。