Pure C# / .NET port of FileFS, the single-image virtual filesystem used by the C, Go, Java, Rust, and Zig implementations in this repository.
net10.0
dotnet/
├── FileFS.sln
├── FileFS/
│ ├── FileSystem.cs
│ ├── FileSystem.Mount.cs
│ ├── FileSystem.Txn.cs
│ ├── FileSystem.Block.cs
│ ├── FileSystem.PathOps.cs
│ ├── FileSystem.Open.cs
│ ├── FileSystem.IO.cs
│ ├── FileSystem.Dir.cs
│ ├── FileSystem.FileOps.cs
│ ├── FileHandle.cs
│ ├── DirectoryHandle.cs
│ ├── DirEntry.cs
│ ├── FileType.cs
│ ├── SeekWhence.cs
│ ├── FileFsException.cs
│ └── Internal/
│ ├── Types.cs
│ └── Util.cs
└── FileFS.Tests/
└── FileSystemTests.cs
cd dotnet
dotnet testFileSystem.Mkfs(path)formats a new FileFS image.Mount/Umountwork against the image file directly and use a journal atpath + "-j".Getcwd()matches the historical FileFS behavior and keeps a trailing slash for non-root directories, for example/docs/.Openacceptsr,w,a,r+,w+, anda+.- Directory iteration returns
DirEntryinstances withNameandType. - Transactions use the same copy/add staging model as the Go port and recover from a completed journal on mount.
This port preserves the shared FileFS image format:
- block size:
512 - magic:
78 11 45 14 - journal sidecar:
*-j
It is a pure managed rewrite and does not use P/Invoke.