Управление файлами и каталогами - это основные операции для любой программы. Поскольку Node.js является платформой на стороне сервера и может напрямую взаимодействовать с компьютером, на котором он работает, возможность манипулировать файлами является базовой функцией. К счастью, в библиотеку Node.js встроен fs модуль. Он имеет множество функций, которые могут помочь в управлении файлами и папками. Поддерживаемые операции с файлами и каталогами включают в себя базовые операции, такие как манипулирование и открытие файлов в каталогах. Точно так же он может делать то же самое с файлами. Он может делать это как синхронно, так и асинхронно. Он имеет асинхронный API с функциями, поддерживающими обещания. Также он может показывать статистику для файла. Почти все операции с файлами, которые мы можем придумать, можно выполнить с помощью встроенного модуля fs. В этой статье мы усечем файлы с помощью семейства функций truncate и удалим файлы и символические ссылки с помощью семейства функций unlink.

Обрезать файлы с помощью семейства функций fs.truncate

Мы можем обрезать файлы с помощью семейства функций Node.js truncate. Усечение файла - это сжатие файла до указанного размера. Для асинхронного усечения файла мы можем использовать функцию truncate. Функция принимает 3 аргумента. Первый аргумент - это объект пути, который может быть строкой, объектом буфера или объектом URL. Когда дескриптор файла передается в первый аргумент вместо пути, он автоматически вызывает ftruncate для усечения файла с данным дескриптором файла. Передача дескриптора файла устарела и может вызвать ошибку в будущем. Второй аргумент - это длина файла в байтах, до которого вы хотите его обрезать. Значение по умолчанию - 0. Любые дополнительные данные, превышающие указанный размер, теряются, если размер меньше исходного. Третий аргумент - это функция обратного вызова, которая запускается после завершения операции усечения. Он принимает параметр err, который равен null, когда операция усечения завершается успешно, и в противном случае имеет объект с информацией об ошибке.

Чтобы обрезать файл с помощью функции truncate, мы можем написать следующий код:

const fs = require("fs");
const truncateFile = "./files/truncateFile.txt";
fs.truncate(truncateFile, 1, err => {
  if (err) throw err;
  console.log("File truncated");
});

Если мы запустим приведенный выше код, в файле, который вы усекаете, должен остаться один байт содержимого.

Синхронная версия функции truncate - это функция truncateSync. Функция принимает 2 аргумента. Первый аргумент - это объект пути, который может быть строкой, объектом буфера или объектом URL. Когда дескриптор файла передается в первый аргумент вместо пути, он автоматически вызывает ftruncateSync, чтобы обрезать файл с данным дескриптором файла. Передача дескриптора файла устарела и может вызвать ошибку в будущем. Второй аргумент - это длина файла в байтах, до которого вы хотите его усечь. Значение по умолчанию - 0. Любые дополнительные данные, превышающие указанный размер, теряются, если размер меньше исходного. Возвращает undefined.

Мы можем использовать функцию truncateSync, как в следующем коде:

const fs = require("fs");
const truncateFile = "./files/truncateFile.txt";
try {
  fs.truncateSync(truncateFile, 1);
  console.log("File truncated");
} catch (error) {
  console.error(error);
}

Если мы запустим приведенный выше код, в файле, который вы усекаете, должен остаться один байт содержимого.

Также есть обещанная версия функции truncate. Функция принимает 2 аргумента. Первый аргумент - это объект пути, который может быть строкой, объектом буфера или объектом URL. Второй аргумент - длина файла в байтах, до которого вы хотите его обрезать. Значение по умолчанию - 0. Любые дополнительные данные, превышающие указанный размер, теряются, если размер меньше исходного. Он возвращает обещание, которое разрешается без аргументов при успешной операции.

Чтобы усечь файл с помощью обещанной версии функции truncate, мы можем написать следующий код:

const fsPromises = require("fs").promises;
const truncateFile = "./files/truncateFile.txt";
(async () => {
  try {
    await fsPromises.truncate(truncateFile, 1);
    console.log("File truncated");
  } catch (error) {
    console.error(error);
  }
})();

Если мы запустим приведенный выше код, в файле, который вы усекаете, снова должен остаться один байт содержимого.

Удалите файлы и символические ссылки с помощью семейства функций fs.unlink

Мы можем удалить файл или символическую ссылку с помощью функции unlink. Функция принимает 2 аргумента. Первый аргумент - это объект пути, который может быть строкой, объектом буфера или объектом URL. Второй аргумент - это функция обратного вызова, которая принимает объект err, который равен null, когда операция удаления файла или символической ссылки завершается успешно, и имеет данные об ошибке, если операция не удалась. Функция unlink не работает с каталогами ни в каком состоянии. Чтобы удалить каталоги, мы должны использовать функцию rmdir.

Чтобы использовать функцию unlink для удаления файла, мы можем что-то вроде кода ниже:

const fs = require("fs");
const fileToDelete = "./files/deleteFile.txt";
fs.unlink(fileToDelete, err => {
  if (err) {
    throw err;
  }
  console.log("Removal complete!");
});

Если мы запустим приведенный выше код, файл, который нужно удалить, исчезнет.

Синхронная версия функции unlink - это функция unlinkSync. Функция принимает один аргумент. Единственным аргументом является объект пути, который может быть строкой, объектом буфера или объектом URL. Возвращает undefined.

Мы можем использовать это как в следующем коде:

const fs = require("fs");
const fileToDelete = "./files/deleteFile.txt";
try {
  fs.unlinkSync(fileToDelete);
  console.log("Removal complete!");
} catch (error) {
  console.error(error);
}

Также есть обещанная версия функции unlink. Функция принимает один аргумент. Единственным аргументом является объект пути, который может быть строкой, объектом буфера или объектом URL. Он возвращает обещание, которое разрешено без аргументов, когда операция прошла успешно.

Если мы запустим приведенный выше код, файл, который нужно удалить, исчезнет.

Мы можем использовать это как в следующем коде:

const fsPromises = require("fs").promises;
const fileToDelete = "./files/deleteFile.txt";
(async () => {
  try {
    await fsPromises.unlink(fileToDelete);
    console.log("Removal complete!");
  } catch (error) {
    console.error(error);
  }
})();

Если мы запустим приведенный выше код, файл, который нужно удалить, исчезнет.

Обещанная версия функции unlink - намного лучший выбор, чем функция unlinkSync, если вы хотите выполнить несколько действий последовательно, включая вызов функции unlink, поскольку она не связывает всю программу в ожидании удаления файла или символической ссылки. операцию, которую необходимо завершить, прежде чем продолжить программирование других частей программы.

В этой статье мы усекаем файлы с помощью семейства функций truncate и удаляем файлы и символические ссылки с помощью семейства функций unlink. Семейство функций truncate позволяет нам указать количество байтов, которое нужно сохранить при усечении остальной части файла. Семейство функций unlink удаляет файлы и символические ссылки. Если мы хотим выполнять эти операции последовательно с другими операциями, обещаем версии этих функций. Несмотря на то, что API все еще является экспериментальным, он намного лучше синхронных версий этих функций, поскольку позволяет выполнять последовательные и асинхронные операции с обещаниями. Кроме того, это помогает избежать ада обратных вызовов, когда мы вкладываем обещания на слишком многих уровнях.