Node.js | fs.access () Метод

Опубликовано: 2 Августа, 2021

Метод fs.access () используется для проверки прав доступа к данному файлу или каталогу. Проверяемые разрешения можно указать в качестве параметра с помощью констант доступа к файлам. Также можно проверить права доступа к нескольким файлам с помощью побитового оператора ИЛИ для создания маски с более чем одной файловой константой.

Примечание. Не рекомендуется использовать метод fs.access () для проверки доступности файла перед вызовом fs.open (), fs.readFile () или fs.writeFile (), поскольку он создает состояние гонки, поскольку состояние файла может быть изменено другими процессами после теста.

Синтаксис:

 fs.access (путь, режим, обратный вызов)

Параметры: этот метод принимает три параметра, как указано выше и описано ниже:

  • путь: это строка, буфер или URL-адрес, обозначающий путь к файлу или каталогу, для которого необходимо проверить разрешение.
  • режим: это целочисленное значение, обозначающее разрешение, которое нужно проверить. Оператор логического ИЛИ может использоваться для разделения нескольких разрешений. Он может иметь значения fs.constants.F_OK , fs.constants.R_OK , fs.constants.W_OK и fs.constants.X_OK . Это необязательный параметр. Значение по умолчанию - fs.constants.F_OK .
  • обратный вызов: это функция, которая будет вызываться при выполнении метода.
    • err: это ошибка, которая будет выдана, если метод не сработает.

Примеры ниже иллюстрируют метод fs.access () в Node.js:

Пример 1: В этом примере показано тестирование прав на чтение и запись файла.




// Node.js program to demonstrate the
// fs.access() method
// Import the filesystem module
const fs = require( 'fs' );
// Allowing only read permission
console.log( "Giving only read permission to the user" );
fs.chmodSync( "example_file.txt" , fs.constants.S_IRUSR);
// Test the read permission
fs.access( 'example_file.txt' , fs.constants.R_OK, (err) => {
console.log( ' > Checking Permission for reading the file' );
if (err)
console.error( 'No Read access' );
else
console.log( 'File can be read' );
});
// Test both the read and write permissions
fs.access( 'example_file.txt' , fs.constants.R_OK
| fs.constants.W_OK, (err) => {
console.log( ' > Checking Permission for reading"
+ " and writing to file' );
if (err)
console.error( 'No Read and Write access' );
else
console.log( 'File can be read and written' );
});

Выход:

Предоставление пользователю разрешения только на чтение

> Проверка разрешения на чтение файла
Файл можно прочитать

> Проверка разрешения на чтение и запись в файл
Нет доступа для чтения и записи

Пример 2: В этом примере показано тестирование файла, если он существует.




// Node.js program to demonstrate the
// fs.access() method
// Import the filesystem module
const fs = require( 'fs' );
// Test the if the file exists
fs.access( 'example_file.txt' , fs.constants.F_OK, (err) => {
console.log( ' > Checking if the file exists' );
if (err) {
console.error( 'File does not exist' );
// Create the file
console.log( ' Creating the file' );
fs.writeFileSync( "example_file2.txt" , "Test File" );
// Test the if the file exists again
fs.access( 'example_file2.txt' , fs.constants.F_OK, (err) => {
console.log( ' > Checking if the file exists' );
if (err)
console.error( 'File does not exist' );
else {
console.log( 'File does exist' );
}
});
}
else {
console.log( 'File does exist' );
}
});

Выход:

> Проверка, существует ли файл
Файл не существует

Создание файла

> Проверка, существует ли файл
Файл действительно существует

Ссылка: https://nodejs.org/api/fs.html#fs_fs_access_path_mode_callback