ActDim.BytePath.FileSystemStore
1.0.16
dotnet add package ActDim.BytePath.FileSystemStore --version 1.0.16
NuGet\Install-Package ActDim.BytePath.FileSystemStore -Version 1.0.16
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ActDim.BytePath.FileSystemStore" Version="1.0.16" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ActDim.BytePath.FileSystemStore" Version="1.0.16" />
<PackageReference Include="ActDim.BytePath.FileSystemStore" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ActDim.BytePath.FileSystemStore --version 1.0.16
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: ActDim.BytePath.FileSystemStore, 1.0.16"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ActDim.BytePath.FileSystemStore@1.0.16
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ActDim.BytePath.FileSystemStore&version=1.0.16
#tool nuget:?package=ActDim.BytePath.FileSystemStore&version=1.0.16
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
ActDim.BytePath.FileSystemStore
File-system blob data store implementation for ActDim.BytePath.
Features
- URL-Safe Hierarchy & Hash-Sharded Storage: Splits multi-segment keys by
HierarchySeparator(defaults to':'per RFC 3986pchar) into directory structures, or applies uniform 2-levelXxHash3hash-sharding for flat keys. - Lossless Bijective Escaping: Reversibly escapes invalid filename characters (
%XX) while preserving file extensions forResolveLocationAsync. - Windows Device Name & Trailing Char Protection: Escapes DOS device names (
CON,PRN,AUX,NUL,COM1-COM9,LPT1-LPT9) and trailing dots/spaces to prevent silent Win32 file aliasing and collisions. - Direct & Piped Streaming: Zero-copy stream reads and file writes.
- Empty Directory Pruning: Automatically cleans up empty parent subdirectories on deletion down to the root base directory.
Installation
dotnet add package ActDim.BytePath.FileSystemStore
Key Format & Storage Layout
Logical Separator (:)
Keys use : (colon) as the standard logical namespace delimiter (e.g. tenant:reports:2026:august.pdf). Colon is unreserved in RFC 3986 pchar, making keys safe to pass directly inside URL path segments (/api/blobs/{key}) without percent-encoding issues or catch-all route collisons.
Storage Layout Rules
- Multi-Segment Keys: When
HierarchySeparatoris set (default':'), a key with multiple segments is placed in matching subdirectories (_basePath/tenant/reports/2026/august.pdf). - Single-Segment / Flat Keys: Keys without the hierarchy separator are uniformly distributed into 2-level directory buckets derived from the 64-bit non-cryptographic
XxHash3of the key (_basePath/hash[0..2]/hash[2..4]/filename). - Pure Hash-Sharding: Setting
options.HierarchySeparator = nulldisables directory splitting and routes all keys through hash-sharded buckets.
Escaping Mechanics
- Reversible
%XXEncoding: Invalid filesystem characters (Path.GetInvalidFileNameChars()) and%itself are hex-encoded (%XX), guaranteeing zero collisions. - File Extension Preservation: Standard filename characters and extensions (
.png,.pdf) remain untouched for direct path resolution viaResolveLocationAsync. - DOS/Windows Device Names: Reserved names (
CON,PRN,AUX,NUL,COM1-COM9,LPT1-LPT9with or without extensions) have their first character escaped (e.g.con.txt→%63on.txt) so Win32 never mistakes a file for a system device pipe. - Trailing Dots & Spaces: Win32 silently trims trailing
.and; escaping them (%2E,%20) ensuresname.andnamenever alias to the same file.
Quick Start
services.AddBlobManager(builder =>
{
builder.WithFileSystemDataStore(options =>
{
options.BaseDirectory = "./my-blobs";
options.HierarchySeparator = ':'; // default, or null for pure hash-sharding
});
});
AI-Assisted Development
Developed with Along - a provider-agnostic context and memory system for AI coding agents.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- ActDim.BytePath (>= 1.0.16)
- Microsoft.Extensions.Caching.Abstractions (>= 10.0.11)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.11)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.11)
- Microsoft.IO.RecyclableMemoryStream (>= 3.0.1)
- System.IO.Hashing (>= 10.0.11)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.16 | 92 | 9/9/2026 |