xoofx / Zio
Licence: bsd-2-clause
A cross-platform abstract/virtual filesystem framework with many built-ins filesystems for .NET
Stars: ✭ 483
Projects that are alternatives of or similar to Zio
Discutils
Utility libraries to interact with discs, filesystem formats and more
Stars: ✭ 417 (-13.66%)
Mutual labels: filesystem
Httpdirfs
A filesystem which allows you to mount HTTP directory listings, with a permanent cache. Now with Airsonic / Subsonic support!
Stars: ✭ 443 (-8.28%)
Mutual labels: filesystem
Netfabric.hyperlinq
High performance LINQ implementation with minimal heap allocations. Supports enumerables, async enumerables, arrays and Span<T>.
Stars: ✭ 479 (-0.83%)
Mutual labels: dotnet-core
Io
Dataset, streaming, and file system extensions maintained by TensorFlow SIG-IO
Stars: ✭ 427 (-11.59%)
Mutual labels: filesystem
Opentabletdriver
Open source, cross-platform, user-mode tablet driver
Stars: ✭ 424 (-12.22%)
Mutual labels: dotnet-core
React Native Fs
Native filesystem access for react-native
Stars: ✭ 4,264 (+782.82%)
Mutual labels: filesystem
Rockpaperscissorslizardspock
Rock, Paper, Scissors, Lizard, Spock - Sample Application
Stars: ✭ 477 (-1.24%)
Mutual labels: dotnet-core
Nukeeper
Automagically update nuget packages in .NET projects
Stars: ✭ 437 (-9.52%)
Mutual labels: dotnet-core
Cronos
Fully-featured .NET library for working with Cron expressions. Built with time zones in mind and intuitively handles daylight saving time transitions
Stars: ✭ 432 (-10.56%)
Mutual labels: dotnet-core
Laravel Filesystem Qiniu
A Qiniu Storage filesystem for Laravel
Stars: ✭ 437 (-9.52%)
Mutual labels: filesystem
Smartcode
SmartCode = IDataSource -> IBuildTask -> IOutput => Build Everything!!!
Stars: ✭ 464 (-3.93%)
Mutual labels: dotnet-core
Dotnet Win32 Service
Helper classes to set up and run as windows services directly on .net core. A ServiceBase alternative.
Stars: ✭ 425 (-12.01%)
Mutual labels: dotnet-core
Dotnet Serve
Simple command-line HTTPS server for the .NET Core CLI
Stars: ✭ 481 (-0.41%)
Mutual labels: dotnet-core
Abp Samples
Sample solutions built with the ABP Framework
Stars: ✭ 417 (-13.66%)
Mutual labels: dotnet-core
Csharp Driver
DataStax C# Driver for Apache Cassandra
Stars: ✭ 477 (-1.24%)
Mutual labels: dotnet-core
Jsonapidotnetcore
JSON:API Framework for ASP.NET Core
Stars: ✭ 465 (-3.73%)
Mutual labels: dotnet-core
Zio
Zio provides a simple, powerful, cross-platform filesystem abstraction for .NET with many built-ins filesystems.
Features
- Compatible with
.NET 4.0
,4.5+
and the cross platform.NET Core/Standard 1.3+
- API providing all operations provided by the regular System.IO API (e.g File.Move, Directory.Delete... etc.)
- Allowing atomic filesystem operations (e.g File.Replace...)
- A simple interface abstraction
IFileSystem
- Supports for filesystem watcher through the
IFileSystem.Watch
method and theIFileSystemWatcher
interface- For all builtin filesystems (aggregates, memory...etc.)
- All paths are normalized through a lightweight uniform path struct
UPath
- Multiple built-ins filesystems:
-
PhysicalFileSystem
to access the physical disks, directories and folders.- With uniform paths, this filesystem on Windows is working like on a Windows Subsystem Linux (WSL), by remapping drives to mount directory (e.g path
/mnt/c/Windows
equivalent toC:\Windows
)
- With uniform paths, this filesystem on Windows is working like on a Windows Subsystem Linux (WSL), by remapping drives to mount directory (e.g path
-
MemoryFileSystem
to access a filesystem in memory:- Trying to be 100% compatible with a true
PhysicalFileSystem
(including exceptions) - Efficient concurrency with a per node (file or directory) locking mechanism
- A safe hierarchical locking strategy (following Unix kernel recommendations for directory locking)
- Support for
FileShare.Read
,FileShare.Write
andFileShare.ReadWrite
- Internally support for filesystem atomic operations (
File.Replace
)
- Trying to be 100% compatible with a true
- On top of these final filesystem, you can compose more complex filesystems:
-
AggregateFileSystem
providing a read-only filesystem aggregating multiple filesystem that offers a merged view -
MountFileSystem
to mount different filesystems at a specific mount point name -
SubFileSystem
to view a sub-folder of another filesystem as if it was a root/
directory -
ReadOnlyFileSystem
to interact safely with another filesystem in read-only mode
-
-
- Higher level API similar to
FileSystemEntry
,FileEntry
andDirectoryEntry
offering a similar API to their respectiveFileSystemInfo
,FileInfo
,DirectoryInfo
Usage
Accessing a physical filesystem:
var fs = new PhysicalFileSystem();
foreach(var dir in fs.EnumerateDirectories("/mnt/c"))
{
// ...
}
Using an in-memory filesystem:
var fs = new MemoryFileSystem();
fs.WriteAllText("/temp.txt", "This is a content");
if (fs.FileExists("/temp.txt"))
{
Console.WriteLine("The content of the file:" + fs.ReadAllText("/temp.txt"))
}
The following documentation provides more information about the API and how to use it.
Documentation
The documentation is directly available as part of this repository in the /doc
folder.
Download
Zio is available as a NuGet package:
Build
In order to build Zio, you need to install Visual Studio 2017 with latest .NET Core
TODO
- [ ] Add support for ZipArchive (readonly, readwrite)
- [ ] Add support for Git FileSystem (readonly)
License
This software is released under the BSD-Clause 2 license.
Credits
The logo is File
by jeff from the Noun Project
Author
Alexandre MUTEL aka xoofx
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].