Node.js | fs.access() Method

The fs.access() method is used to test the permissions of a given file or directory. The permissions to be checked can be specified as a parameter using file access constants. It is also possible to check multiple file permissions by using the bitwise OR operator to create a mask with more than one file constant.

Note: It is not recommended to use the fs.access() method to check for the accessiblity of a file before calling fs.open(), fs.readFile() or fs.writeFile(), because it introduces a race condition since the file state may be changed by other processes after the test.

Syntax:

fs.access( path, mode, callback )

Parameters: This method accepts three parameters as mentioned above and described below:

  • path: It is a String, Buffer or URL that denotes the path of the file or directory for which the permission has to be tested.
  • mode: It is an integer value that denotes the permission to be tested for. The logical OR operator can be used to seperate multiple permission. It can have the values fs.constants.F_OK, fs.constants.R_OK, fs.constants.W_OK and fs.constants.X_OK. It is an optional parameter. The default value is fs.constants.F_OK.
  • callback: It is a function that would be called when the method is executed.
    • err: It is an error that would be thrown if the method fails.

Below examples illustrate the fs.access() method in Node.js:



Example 1: This example shows the testing of the read and write permission of a file.

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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('\n> 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('\n> 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');
});

chevron_right


Output:

Giving only read permission to the user

> Checking Permission for reading the file
File can be read

> Checking Permission for reading and writing to file
No Read and Write access

Example 2: This example shows the testing of a file if it exists.

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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('\n> Checking if the file exists');
  
  if (err) {
    console.error('File does not exist');
  
    // Create the file
    console.log('\nCreating 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('\n> 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');    
  }
});

chevron_right


Output:

> Checking if the file exists
File does not exist

Creating the file

> Checking if the file exists
File does exist

Reference: https://nodejs.org/api/fs.html#fs_fs_access_path_mode_callback




My Personal Notes arrow_drop_up

Im listening

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.