# NodeJS Modules

Lets learn about path module of nodejs

path module helps to get files and directory and works with it and write code for cross platform code . like getting files from any operating system like macos, linux and windows . so the code can access files system .

some methods and working with path module

like in unix based system , the path may looks like 'users/mackin/file.txt' and in windows it look different like '`C:\users\joe\file.txt`'

## Some Methods in Path Module

1.  dirname : to get directory of file
    
2.  basename : to extract file name
    
3.  extname: to get extension of ifle
    

```javascript
// importing path module

import path from 'node:path';

const notes = '/users/dipesh/documents/notes.txt';

//! getting filename from path
console.log(path.basename(notes));

//! getting dirname
console.log(path.dirname(notes));

//! getting extension name
console.log(path.extname(notes));

// output
notes.txt
/users/dipesh/documents
.txt
```

## Working with paths

```javascript
// importing path module

import path from 'node:path';

const notes = '/users/dipesh/documents/notes.txt';

//! getting filename from path
// console.log(path.basename(notes));

//! getting dirname
// console.log(path.dirname(notes));

//! getting extension name
// console.log(path.extname(notes));

//! joining paths
const username = 'dipesh';
console.log(path.join('/', 'users', username, 'notes.txt'));

//! resolving paths, getting absolute path
console.log(path.resolve('notes.txt'));
// path.resolve('joe.txt'); // '/Users/joe/joe.txt' if run from my home folder

console.log(path.resolve('src', 'users.txt'));
// first parameters takes as base for second

console.log(path.resolve('/etc', 'notes.js'));
//if first parameters start with slash then it taken as absolute path

console.log(import.meta.dirname);
console.log(import.meta.filename);

console.log(
  path.basename(import.meta.filename, path.extname(import.meta.filename)),
);
```

# FS Module

fs module helps to create file, read, write, delete, rename, append files.

```javascript
// create
// append
// rename
// delete

const fs = require('node:fs');
const path = require('node:path');

const folderPath = path.join(__dirname, 'studentsFolder');
const filePath = path.join(folderPath, 'students.pdf');
console.log(folderPath);

//!1. create folder
if (!fs.existsSync(folderPath)) {
  fs.mkdirSync(folderPath);
  console.log('folder created');
}

// !2. create file
fs.writeFileSync(filePath, 'This is students file');
// console.log('file created');

fs.appendFileSync(filePath, '\nThis is appended text');
console.log('file updated');

//!4. read file
// const content = fs.readFileSync(filePath, 'utf-8');
// console.log('file content :', content);

//!5.delete file
// fs.unlinkSync(filePath);
// console.log('file deleted');
```
