Mmzkworks.StorageSharp 0.1.2

dotnet add package Mmzkworks.StorageSharp --version 0.1.2
                    
NuGet\Install-Package Mmzkworks.StorageSharp -Version 0.1.2
                    
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="Mmzkworks.StorageSharp" Version="0.1.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Mmzkworks.StorageSharp" Version="0.1.2" />
                    
Directory.Packages.props
<PackageReference Include="Mmzkworks.StorageSharp" />
                    
Project file
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 Mmzkworks.StorageSharp --version 0.1.2
                    
#r "nuget: Mmzkworks.StorageSharp, 0.1.2"
                    
#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 Mmzkworks.StorageSharp@0.1.2
                    
#: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=Mmzkworks.StorageSharp&version=0.1.2
                    
Install as a Cake Addin
#tool nuget:?package=Mmzkworks.StorageSharp&version=0.1.2
                    
Install as a Cake Tool

StorageSharp

StorageSharp is a flexible storage system for handling single binary files and folder file collections. By combining them, you can flexibly handle file systems, caching, and folder file collections (called Packs).

CI/CD Pipeline NuGet

Read first

Features

Storage Features (IStorage)

  • FileStorage: File system-based storage
  • MemoryStorage: Memory-based storage
  • CachedStorage: Storage with caching functionality
  • StorageRouter: Routes operations to different storages based on key patterns

Archive Features (IPacks)

  • ZippedPacks: Archive implementation that manages packages in ZIP format

Basic Usage

Using Storage

// File storage
var fileStorage = new FileStorage("StorageDirectory");

// Writing data
await fileStorage.WriteAsync("key.txt", data);

// Reading data
var data = await fileStorage.ReadAsync("key.txt");

Using Cached Storage

var storage = new CachedStorage(
    cache: new MemoryStorage(), // Cache storage
    origin: new FileStorage("OriginStorage") // Origin storage
);

Using ZIP Packages

var packages = new ZippedPacks(
    new ZippedPacks.Settings("Tmp/Packs/"),
    storage
);

// Add directory to archive
var archiveScheme = await packages.Add(directoryPath);

// Load archive
var loadedPath = await packages.Load(archiveScheme);

// Use files
// ...

// Unload archive
await packages.Unload(archiveScheme);

// Delete archive
await packages.Delete(archiveScheme);

// List all archives
var list = await packages.ListAll();

Setup

Using as a Library

# Add reference to project
dotnet add reference path/to/StorageSharp.csproj

Using as NuGet Package (in the future)

dotnet add package StorageSharp

Development Environment Setup

# Clone repository
git clone <repository-url>
cd storageSharp

# Restore dependencies
dotnet restore

# Build
dotnet build

# Run tests
dotnet test

Running Sample Programs

# Run sample project
cd StorageSharp.Samples
dotnet run

Project Structure

storageSharp/
├── StorageSharp/                    # Main library
│   ├── Storages/
│   │   ├── IStorage.cs              # Storage interface
│   │   ├── FileStorage.cs           # File storage implementation
│   │   ├── MemoryStorage.cs         # Memory storage implementation
│   │   ├── CachedStorage.cs         # Cached storage implementation
│   │   └── StorageRouter.cs         # Storage routing implementation
│   ├── Packs/
│   │   ├── IPacks.cs                # Archive interface
│   │   └── ZippedPacks.cs           # ZIP package implementation
│   └── StorageSharp.csproj          # Library project
├── StorageSharp.Samples/            # Sample project
│   ├── Program.cs                   # Sample program
│   ├── StorageSharp.Samples.csproj  # Sample project
│   └── README.md                    # Sample README
├── StorageSharp.Tests/              # Test project
│   ├── UnitTests/                   # Unit tests
│   └── IntegrationTests/            # Integration tests
├── storageSharp.sln                 # Solution file
└── README.md                        # This file

Usage Examples

Basic Storage Operations

// Using file storage
var fileStorage = new FileStorage("ExampleStorage");
var testData = System.Text.Encoding.UTF8.GetBytes("Hello, StorageSharp!");
await fileStorage.WriteAsync("test.txt", testData);

// Using memory storage
var memoryStorage = new MemoryStorage();
await memoryStorage.WriteAsync("memory-test.txt", testData);

Using Cached Storage

var cache = new MemoryStorage();
var origin = new FileStorage("OriginStorage");
var cachedStorage = new CachedStorage(cache, origin);

// Writing data
var data = System.Text.Encoding.UTF8.GetBytes("Cached data example");
await cachedStorage.WriteAsync("cached-file.txt", data);

// Reading data (cache hit/miss is automatically managed)
var readData = await cachedStorage.ReadAsync("cached-file.txt");

Using ZIP Packages

var storage = new FileStorage("ZippedPacks");
var packages = new ZippedPacks(
    new ZippedPacks.Settings("Tmp/Packs/"),
    storage
);

// Add directory to archive
var archiveScheme = await packages.Add("MyDirectory");

// Load and use archive
var loadedPath = await packages.Load(archiveScheme);
// Use files...
await packages.Unload(archiveScheme);

// Delete archive
await packages.Delete(archiveScheme);

Using Storage Router

var storageRouter = new StorageRouter(new[]
{
    // Route HTTP/HTTPS keys to specific storage
    new StorageRouter.Branch(
        key => key.StartsWith("http://") || key.StartsWith("https://"),
        new FileStorage("HttpStorage")),
    
    // Route file:// keys with prefix removal
    new StorageRouter.Branch(
        key => key.StartsWith("file://"),
        key => key.Substring("file://".Length), // Key formatter
        new FileStorage("LocalStorage"))
},
new FileStorage("DefaultStorage")); // Default storage

// Write to appropriate storage based on key
await storageRouter.WriteAsync("http://example.com/data.txt", data);
await storageRouter.WriteAsync("file://local/data.txt", data); // Routed to LocalStorage with key "local/data.txt"
await storageRouter.WriteAsync("regular-file.txt", data); // Routed to DefaultStorage

Notes

  • Temporary files are automatically managed, but please consider appropriate cleanup when handling large amounts of data
  • Use the caching functionality with attention to memory usage
  • The ZIP package functionality uses the SharpZipLib library

About AI Generation

  • This document has been machine translated.
  • This repo contains generated code by ChatGPT and Cursor.

License

This project is published under the MIT License.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  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. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
0.1.2 137 7/10/2025
0.1.1 138 7/9/2025
0.1.0 134 7/8/2025
0.0.4 97 6/27/2025
0.0.3 111 6/27/2025
0.0.1 130 6/27/2025