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 accessibility 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 separate 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.
javascript
// 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' ); }); |
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.
javascript
// 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' ); } }); |
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