3.3 KiB
Backends
This page summarizes the built-in filesystem implementations in VirtualFS.
PhysicalFileSystem
Backs a virtual subtree with a real local directory.
Characteristics:
- writable
- creates the root directory if it does not exist
- maps virtual
/separators to host-native separators internally - supports native file and directory metadata
Good fit for:
- local content directories
- writable application storage
- test fixtures backed by temporary directories
MemoryFileSystem
Stores entries entirely in memory.
Characteristics:
- writable
- no physical path
- lightweight and fast for temporary content
Good fit for:
- generated content
- overlays
- temporary runtime state
- tests
ZipReadFileSystem
Exposes a ZIP archive as a read-only virtual filesystem.
Characteristics:
- read-only
- backed by
SharpZipLib - requires a seekable stream
- optional path scoping to a ZIP subdirectory
- optional regex filtering
Good fit for:
- packaged assets
- static content bundles
- immutable deployment artifacts
EmbeddedResourceFileSystem
Exposes assembly embedded resources as a read-only filesystem.
Characteristics:
- read-only
- backed by manifest resources
- optional root namespace trimming
- optional regex filtering
Good fit for:
- embedded templates
- application assets bundled in assemblies
- shipping immutable defaults inside an executable or library
FtpFileSystem
FTP-backed implementation using FluentFTP.
Characteristics:
- writable
- supports file, directory, and symlink listings
- supports recursive directory deletion
- opens a fresh FTP connection per operation
Good fit for:
- remote FTP stores where a fuller client implementation is needed
Notes:
- network operations are naturally slower than local backends
- deep copy/move operations may become expensive
SimpleFtpFileSystem
Minimal FTP implementation based on FtpWebRequest.
Characteristics:
- writable
- simpler than
FtpFileSystem - recursive delete is implemented in library code
Good fit for:
- compatibility scenarios
- cases where the simpler implementation is sufficient
SimpleFtpCachedFileSystem
Caching layer on top of SimpleFtpFileSystem.
Characteristics:
- caches directory listings by path
- updates cache on some mutations
- reduces repeated directory enumeration cost
Good fit for:
- FTP trees with repeated read-heavy directory access
SFtpFileSystem
SFTP-backed implementation using SSH.NET.
Characteristics:
- writable
- supports password authentication
- supports private key authentication
- can validate host fingerprint
- can forward exceptions to a callback
Good fit for:
- secure remote filesystem access over SFTP
Backend Selection Guidance
Choose a backend based on the shape of the content:
- use
PhysicalFileSystemfor local writable data - use
MemoryFileSystemfor generated or ephemeral data - use
ZipReadFileSystemfor immutable packaged assets - use
EmbeddedResourceFileSystemfor assembly-bundled assets - use
FtpFileSystemorSFtpFileSystemfor remote stores - use
SimpleFtpCachedFileSystemwhen FTP directory reads are repetitive
Common combinations:
- ZIP as a low-priority base layer + physical overrides as high priority
- physical content + memory-generated overlay
- embedded resources + memory patch layer