filemanagementsystemfornode
Version:
A file management system for node.js application making managements of files easier, all in one code, you can delete, move, etc, files all in one code, making ability to manage a system eg a application requiring transfering of files in folders easier
158 lines (125 loc) • 5.79 kB
Markdown
📘 File Management System - TypeScript
A powerful, flexible, and chainable file management system for Node.js.
# **📘 File Management System - TypeScript**
A **powerful, flexible, and chainable file management system** for Node.js.
This system provides an easy way to **manage files and directories** while supporting:
- **Custom error handling**
- **Custom chainable methods**
- **Advanced file operations like compression, metadata retrieval, and content manipulation**.
## **📌 Key Features**
### **🚀 File Operations**
✔ **Rename, Move, Copy, and Delete files**
✔ **Append content to files**
✔ **Retrieve compressed file content (`getInfo()`)**
✔ **Retrieve file metadata (`getMetaInfo()`)**
### **📂 Directory Operations**
✔ **Create, Delete, and List directories**
✔ **Check if a file/folder exists (`syncExist()`)**
### **⚙ Customization & Error Handling**
✔ **Custom error handling** (e.g., auto-create missing files on error)
✔ **Add custom chainable methods (`addMethod()`)**
✔ **Invoke custom chain methods dynamically (`invokeMethod()`)**
## **📥 Installation**
To install and use this package, run:
```sh
git clone https://github.com/Whitzzscott/FileManagement.git
cd FileManagement
npm install
```
## **🛠 Usage Example**
This example demonstrates:
- **Error handling**: Automatically creating a missing file if an error occurs.
- **Custom chainable methods**: Adding a method that logs the file path.
- **File operations**: Renaming, moving, copying, appending, and deleting a file.
```ts
import { FileWrapper } from "./wrappers/FileWrapper";
const file = new FileWrapper("./testFolder/sample.txt");
// ✅ Custom error handling: Auto-create missing files when they are not found
file.errorOnFound = (error) => {
if (error.code === "ENOENT") {
file.sync().writeFile("Default content");
console.log(`📄 File created: ${file.getPath()}`);
}
};
// ✅ Add a custom method (e.g., logging the file path)
file.addMethod("logPath", function () {
console.log("File is at:", this.getPath());
return this;
});
// ✅ Chainable file operations
(async () => {
file
.rename("renamed.txt") // Renames file
.invokeMethod("logPath") // Logs new file path
.move("./testFolder/moved") // Moves file to a new folder
.copy("./backup") // Creates a copy in the backup folder
.append("\nMore content added.") // Appends text to the file
.delete(); // Deletes the file
console.log("📄 Compressed File Content:", file.getInfo());
console.log("📑 File Metadata:", file.getMetaInfo());
console.log("📂 Files in directory:", file.list());
})();
```
## **📜 API Reference**
This file management system offers multiple operations for handling files and folders.
### **📂 File Operations**
| Method | Description | Example |
|--------|------------|---------|
| `rename(newName: string)` | Renames the file | `file.rename("newName.txt")` |
| `move(destination: string)` | Moves the file to a new directory | `file.move("./newFolder")` |
| `copy(destination: string)` | Copies the file to a new location | `file.copy("./backup")` |
| `delete()` | Deletes the file permanently | `file.delete()` |
| `writeFile(content: string)` | Writes new content to the file (overwrites existing content) | `file.writeFile("Hello, world!")` |
| `append(content: string)` | Appends new content to the file | `file.append("\nNew content")` |
### **📁 Directory Operations**
| Method | Description | Example |
|--------|------------|---------|
| `syncExist()` | Checks if a file or folder exists | `if (file.syncExist()) {...}` |
| `sync()` | Ensures the directory exists (creates it if missing) | `file.sync()` |
| `list()` | Lists all files in the directory | `console.log(file.list())` |
### **📊 File Info & Metadata**
| Method | Description | Example |
|--------|------------|---------|
| `getInfo()` | Reads and compresses the entire file content | `console.log(file.getInfo())` |
| `getMetaInfo()` | Retrieves metadata such as size, creation date, and modification date | `console.log(file.getMetaInfo())` |
### **⚙ Customization & Error Handling**
| Method | Description | Example |
|--------|------------|---------|
| `errorOnFound = (error) => {...}` | Custom error handling (e.g., auto-create files) | `file.errorOnFound = (err) => {...}` |
| `addMethod(name, method)` | Adds a custom chainable method | `file.addMethod("customMethod", function () {...})` |
| `invokeMethod(name, ...args)` | Calls a custom method dynamically | `file.invokeMethod("customMethod")` |
## **🔧 How to Use This Project**
1. **Install the package**
```sh
npm install filemanagementsystemfornode
```
2. **Run the script**
```sh
npm run start
```
3. **Modify settings**
- **Change file paths** in `src/main.ts` to test different operations.
- **Modify core functionality in `src/Wrapper`** if necessary.
## **📜 License**
This project is **open-source** and free to use.
## **💡 Future Enhancements**
We plan to add:
- 🔹 **File encryption support** (AES, RSA encryption for file security)
- 🔹 **File versioning** (track changes over time)
- 🔹 **Logging & monitoring system** (track operations in a log file)
🚀 **Enjoy simplified file management with powerful chaining!**
Feel free to suggest new features or improvements! 🎯
## **👨💻 Author**
**WhitzScott** - Developer of the **File Management System**.
If you have questions or ideas, feel free to reach out!