Teerapat
Teerapat

Reputation: 122

Node.js batch create files to every folders in current directory with loop

I have sub 20 directories inside the current directory. I would like to create 'README.md' for every folder inside the current directory. Here is I've tried so far,

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

async function readDirectory(filePath) {
  try {
    const data = await fs.readdir(filePath);
    data.forEach(async file => {
      fs.writeFile('README.md', file);
    });
  } catch (err) {
    console.log(err.message);
  }
}

readDirectory(path.resolve(__dirname));

but the result is not what I'm looking for. Any suggestion?

Upvotes: 0

Views: 489

Answers (1)

Nguyen Kim Bang
Nguyen Kim Bang

Reputation: 41

First writeFile parameters should be full path of file you want to create/write

fs.writeFile( file, data, options, callback )

So I changed your code a little bit

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

async function readDirectory(filePath) {
  const data = await fs.readdirSync(filePath);
  const folders = data.filter((item) => fs.lstatSync(item).isDirectory());

  folders.map((folder) => {
    const subFilePath = path.join(filePath, `/${folder}` + `/README.md`);
    fs.writeFile(subFilePath, '', (err) => {
      if (err) console.log(err);
      else {
        console.log(`File ${subFilePath} created`);
      }
    });
  });
}

readDirectory(path.resolve(__dirname));

Upvotes: 1

Related Questions