Skip to content

MattiaFerraris/UnixFS-sim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Java Virtual File System (JVFS) CLI

Java Build

An in-memory, interactive Unix-like file system simulator built in Java. This project provides a Command Line Interface (CLI) to navigate and manipulate a virtual directory tree using standard Unix commands.

🚀 Features

  • Unix-like Commands: Supports core operations like pwd, cd, ls, mkdir, touch, rm, cat.
  • Advanced Link Management: Full support for creating Hard Links (ln) and Soft/Symbolic Links (ln -s), including proper link-count tracking and dangling link handling.
  • Inode Architecture: Simulates real Unix file systems by decoupling directory entries (names) from the actual file data (Inodes).
  • Robust Path Resolution: Accurately resolves absolute (/home/user) and relative (../dir/./file) paths.
  • In-Memory State: Entirely memory-based execution, leaving your actual operating system untouched.

🛠️ Architecture & Technologies

This project was developed with clean architecture and software engineering best practices in mind:

  • Language: Java (OOP principles)
  • Dependency Injection: Google Guice (for decoupling command logic from the file system state)
  • Testing: JUnit 5 & Mockito (comprehensive unit tests for business logic and state delegation)
  • Design Patterns: Singleton, Command, Factory, and Dependency Injection.

🏁 Getting Started

Prerequisites

  • Java Development Kit (JDK) 17 or higher.
  • Maven or Gradle (depending on your build tool).

Installation & Execution

  1. Clone the repository:
    git clone 'link-repo'.git

About

An in-memory Unix file system simulator built in Java. Features a fully functional CLI, Inode-based architecture, hard/soft link resolution, and dependency injection via Google Guice.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages