DEV Community

Kumar Ayush
Kumar Ayush

Posted on

🔍 Demystifying Node.js Core Modules: A Practical Dive into fs and path

Whether you're just diving into backend development or brushing up on Node.js fundamentals, understanding the built-in fs and path modules is a game changer. These core modules—available without any external installation—lay the groundwork for working efficiently with files and directories across platforms.

🚀 Why Core Modules Matter
Node.js ships with powerful internal tools like fs (file system) and path (path utilities) to help developers:

Read, write, and manage files with ease

Build platform-agnostic paths that work seamlessly across Windows, Linux, and macOS

Let’s explore how these tools fit into your developer toolkit.


📁 Working with the fs Module
The fs module allows both synchronous and asynchronous file operations—ideal for learning and production use respectively.

**✍️ Writing Files
**js

// Synchronous
fs.writeFileSync('example.txt', 'Hello, Node.js!');

// Asynchronous
fs.writeFile('exampleAsync.txt', 'Async Hello!', (err) => {
  if (err) throw err;
  console.log('File created!');
});
Enter fullscreen mode Exit fullscreen mode

📖 Reading Files
js

// Synchronous
const data = fs.readFileSync('example.txt', 'utf-8');
console.log(data);

// Asynchronous
fs.readFile('exampleAsync.txt', 'utf-8', (err, data) => {
  if (err) throw err;
  console.log(data);
});
Enter fullscreen mode Exit fullscreen mode

➕ Appending Content
js

fs.appendFileSync('example.txt', '\nThis is a new line.');
fs.appendFile('example.txt', '\nAsync line here.', (err) => {
  if (err) throw err;
});
Enter fullscreen mode Exit fullscreen mode

🗑️ Deleting Files
js

fs.unlinkSync('example.txt');
fs.unlink('exampleAsync.txt', (err) => {
  if (err) throw err;
  console.log('File deleted!');
});
Enter fullscreen mode Exit fullscreen mode

🗂️ Directories and Listing Contents
js

// Create folder
fs.mkdirSync('myFolder');

// Read current directory
const files = fs.readdirSync('.');
console.log(files);
Enter fullscreen mode Exit fullscreen mode

🧭 Navigating with the path Module
The path module keeps your file paths robust and cross-platform.

🛠️ Common Utilities
js

const path = require('path');

// Joins segments into a normalized path
const filePath = path.join('folder', 'file.txt');

// Gets full absolute path
const absolutePath = path.resolve('folder', 'file.txt');

// Extracts file name, dir, and extension
const base = path.basename('/users/kumar/index.js');
const dir = path.dirname('/users/kumar/index.js');
const ext = path.extname('index.js');
Enter fullscreen mode Exit fullscreen mode

🧪 Utility Checks
js

path.isAbsolute('/folder/file.txt');  // true
path.normalize('folder/../folder2/./file.txt');  // 'folder2/file.txt'
Enter fullscreen mode Exit fullscreen mode

🤝 In Tandem: fs + path
js
const fullPath = path.join(__dirname, 'notes', 'todo.txt');
fs.writeFileSync(fullPath, 'Complete MERN Day 2');


🎯 Wrap-Up
The fs and path modules offer an elegant way to work with files in a platform-safe, efficient manner. Mastering them early on sets the foundation for scalable file operations in real-world applications.

Stay tuned as I continue my MERN stack journey—next up, diving into server-side routing and handling requests using Express.js!!

Top comments (0)