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" />
<PackageReference Include="Mmzkworks.StorageSharp" />
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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#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
#tool nuget:?package=Mmzkworks.StorageSharp&version=0.1.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
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).
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 | Versions 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.
-
.NETStandard 2.1
- Newtonsoft.Json (>= 13.0.3)
- SharpZipLib (>= 1.4.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.