All Projects → xoofx → Zio

xoofx / Zio

Licence: bsd-2-clause
A cross-platform abstract/virtual filesystem framework with many built-ins filesystems for .NET

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
Ls
ls on steroids
Stars: ✭ 458 (-5.18%)
Mutual labels:  filesystem
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
Pidgin
C#'s fastest parser combinator library
Stars: ✭ 469 (-2.9%)
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
Dwarfs
A fast high compression read-only file system
Stars: ✭ 444 (-8.07%)
Mutual labels:  filesystem
Netcorebbs
ASP.NET Core Light forum NETCoreBBS
Stars: ✭ 483 (+0%)
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 Build Status Coverage Status NuGet

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 the IFileSystemWatcher 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 to C:\Windows)
    • 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 and FileShare.ReadWrite
      • Internally support for filesystem atomic operations (File.Replace)
    • 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 and DirectoryEntry offering a similar API to their respective FileSystemInfo, 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: NuGet

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].