Рубрики
Без рубрики

Работа с папками в узле

Как взаимодействовать с папками с помощью узла

В Node.js модуль fs core предоставляет множество удобных методов, которые вы можете использовать для работы с папками.

Проверьте, существует ли папка

Используйте fs.access() , чтобы проверить, существует ли папка и может ли узел получить к ней доступ со своими разрешениями.

Создайте новую папку

Используйте fs.mkdir() или fs.mkdirSync( ) для создания новой папки.

const fs = require('fs')

const folderName = '/Users/flavio/test'

try {
  if (!fs.existsSync(dir)){
    fs.mkdirSync(dir)
  }
} catch (err) {
  console.error(err)
}

Прочитать содержимое каталога

Используйте fs.readdir() или fs.readdirSync для чтения содержимого каталога.

Этот фрагмент кода считывает содержимое папки, как файлы, так и вложенные папки, и возвращает их относительный путь:

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

const folderPath = '/Users/flavio'

fs.readdirSync(folderPath)

Вы можете получить полный путь:

fs.readdirSync(folderPath).map(fileName => {
  return path.join(folderPath, fileName)
}

Вы также можете отфильтровать результаты, чтобы возвращать только файлы и исключать папки:

const isFile = fileName => {
  return fs.lstatSync(fileName).isFile()
}

fs.readdirSync(folderPath).map(fileName => {
  return path.join(folderPath, fileName)
}).filter(isFile)

Переименовать папку

Используйте fs.переименовать() или fs.renameSync() для переименования папки. Первый параметр – это текущий путь, второй – новый путь:

const fs = require('fs')

fs.rename('/Users/flavio', '/Users/roger', err => {
  if (err) {
    console.error(err)
    return
  }
  //done
})

Первый параметр - это текущий путь, второй - новый путь: () является синхронной версией:

const fs = require('fs')

try {
  fs.renameSync('/Users/flavio', '/Users/roger')
} catch (err) {
  console.error(err)
}

Удалить папку

Используйте fs.rmdir() или fs.rmdirSync() для удаления папки.

Удаление папки с содержимым может оказаться более сложным, чем вам нужно.

В этом случае я рекомендую установить модуль fs-extra , который очень популярен и находится в хорошем состоянии, и он является заменой модуль fs , предоставляющий дополнительные функции поверх него.

В этом случае метод remove() – это то, что вам нужно.

Установите его с помощью

npm устанавливает fs-дополнительный

и использовать его вот так:

const fs = require('fs-extra')

const folder = '/Users/flavio'

fs.remove(folder, err => {
  console.error(err)
})

Он также может быть использован с обещаниями:

fs.remove(folder).then(() => {
  //done
}).catch(err => {
  console.error(err)
})

или с асинхронным/ожиданием:

async function removeFolder(folder) {
  try {
    await fs.remove(folder)
    //done
  } catch (err) {
    console.error(err)
  }
}

const folder = '/Users/flavio'
removeFolder(folder)

Оригинал: “https://flaviocopes.com/node-folders/”