ファイルとディレクトリの操作 - Node.js

ファイルの新規作成

構文

fs.writeFile(ファイルのパス, ファイルの中身, コールバック関数);

「 sample.txt 」という空のファイルを作成するには、次のようにします。

const fs = require('fs');

fs.writeFile('./sample.txt', '', (err) => {});

「 Hello, World 」という内容の「 sample.txt 」というファイルを作成するには、次のようにします。

const fs = require('fs');

fs.writeFile('./sample.txt', 'Hello, World', (err) => {});

指定したファイル名がすでにある場合は、ファイルの内容が上書きされるため、注意が必要です。

現在のディレクトリのファイルとディレクトリの一覧を取得する

const fs = require('fs');

// カレントディレクトリ
const path = process.cwd();
// ファイル名の一覧
const filenames = fs.readdirSync(path);
console.log(filenames);

ファイルへの追記

const fs = require('fs');

fs.appendFile('./sample.txt', 'Hello, Javascript\n', (err) => {});

ファイルの削除

const fs = require('fs');

fs.unlink('./sample.txt', (err) => {
    if (err) throw err;
    console.log("ファイルを削除しました。")
});

ファイルのコピー

const fs = require('fs');

fs.copyFile('./sample.txt', './copy_sample.txt', (err) => {
    if (err) throw err;

    console.log('ファイルをコピーしました');
});

今日の日付のファイルを作成する

次のファイルを実行すると同じディレクトリ上に「 日誌_(本日の日付).txt 」という形式のファイルが作成されます。「 (本日の日付) 」の部分にローカル上の時間が入ります。

const fs = require('fs');
let date_time = new Date();

const zeroPadding = (num, digit) => {
  let ret = (('0'.repeat(digit)) + num).slice(-digit);
  return ret;
}

let str = "日誌";
let date = date_time.getFullYear() + zeroPadding(date_time.getMonth() + 1, 2) + date_time.getDate();

fs.writeFile(`./${str}_${date}.txt`, '', (err) => {});

現在のディレクトリ名を取得する

const path = require('path');

console.log(__dirname); // フルパスで表示

console.log(path.basename(__dirname)); // 現在のディレクトリ名のみ取得

ディレクトリの作成

すでにディレクトリが存在する場合は、エラーになります。

const fs = require('fs');

fs.mkdir('test', (err) => {
  if(err) { throw err; }
  console.log("testというディレクトリが作成されました。");
})

ディレクトリが存在しない場合、ディレクトリを作成するには以下のようにします。

const path = require('path');
const fs = require('fs');

let dir_name = 'test'
let dirpath = "./upload/" + dir_name;

if( fs.existsSync( dirpath ) ){
    console.log(`「 ${dir_name} 」ディレクトリは、すでに存在します。`);
}else{
    fs.mkdir('./upload/' + dir_name, (err) => {
    if(err) { throw err; }
        console.log(`「 ${dir_name} 」というディレクトリが作成されました。`);
    })
}

空のディレクトリの削除

ディレクトリ内に、ファイルやサブディレクトリがある場合はエラーになります。

const fs = require('fs');

fs.rmdir('test', (err) => {
  if (err) throw err;

  console.log('test ディレクトリを削除しました');
});

一時ディレクトリにファイルを作成してリネームする

const fs = require('fs');
const dir = fs.mkdtempSync('./tmp-dir');

fs.writeFileSync('./' + dir + '/test.txt', "");
fs.renameSync('./' + dir + '/test.txt', './upload/success.txt');

const delDir = async function(path){
    await fs.rm(path, { recursive: true }, () => {
        console.log("削除完了");
    });
}

delDir(dir)