Zio 0.16.1
Prefix ReservedSee the version list below for details.
dotnet add package Zio --version 0.16.1
NuGet\Install-Package Zio -Version 0.16.1
<PackageReference Include="Zio" Version="0.16.1" />
paket add Zio --version 0.16.1
#r "nuget: Zio, 0.16.1"
// Install Zio as a Cake Addin #addin nuget:?package=Zio&version=0.16.1 // Install Zio as a Cake Tool #tool nuget:?package=Zio&version=0.16.1
Zio
<img align="right" width="160px" height="160px" src="https://raw.githubusercontent.com/xoofx/zio/main/img/zio.png">
Zio provides a simple, powerful, cross-platform filesystem abstraction for .NET with many built-ins filesystems.
Features
- Compatible with
.NET 4.0
,4.5+
,netstandard2.0
,netstandard2.1
andnet6.0
- 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
ZipArchiveFileSystem
to access zip archives:- This filesystem is a wrapper around the
ZipArchive
class - It can work in case sensitive and case insensitive mode
- Support for
FileShare.Read
withZipArchiveMode.Read
- This filesystem is a wrapper around the
- 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 viewMountFileSystem
to mount different filesystems at a specific mount point nameSubFileSystem
to view a sub-folder of another filesystem as if it was a root/
directoryReadOnlyFileSystem
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 2022 with latest .NET 6.0
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
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net40 is compatible. net403 was computed. net45 is compatible. net451 was computed. net452 was computed. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.0
- No dependencies.
-
.NETFramework 4.5
- System.IO.Compression (>= 4.3.0)
-
.NETStandard 2.0
- System.IO.Compression (>= 4.3.0)
- System.IO.Compression.ZipFile (>= 4.3.0)
-
.NETStandard 2.1
- System.IO.Compression (>= 4.3.0)
- System.IO.Compression.ZipFile (>= 4.3.0)
-
net6.0
- No dependencies.
NuGet packages (17)
Showing the top 5 NuGet packages that depend on Zio:
Package | Downloads |
---|---|
ROFSDB
Package Description |
|
com.csutil.cscore
cscore is a lightweight library providing commonly used helpers and patterns for all your C# projects including Logging, PubSub and Injection. See more details at https://github.com/cs-util-com/cscore |
|
Libplanet.Store
Package Description |
|
Borg.Transporter.Core
Common code for the Transporter client. |
|
Test262Harness
Test262 Harness for .NET |
GitHub repositories (6)
Showing the top 5 popular GitHub repositories that depend on Zio:
Repository | Stars |
---|---|
planetarium/libplanet
Blockchain in C#/.NET for on-chain, decentralized gaming
|
|
SnowflakePowered/snowflake
:snowflake: :video_game: Emulator Frontend and SDK
|
|
cs-util-com/cscore
cscore is a minimal-footprint library providing commonly used helpers & patterns for your C# projects. It can be used in both pure C# and Unity projects.
|
|
furesoft/Slithin
A management application for the remarkable tablet
|
|
xoofx/CppAst.CodeGen
An extensible library providing C# PInvoke codegen from C/C++ files for .NET
|
Version | Downloads | Last updated |
---|---|---|
0.19.2 | 9,675 | 8/1/2024 |
0.19.1 | 2,978 | 7/19/2024 |
0.19.0 | 4,402 | 6/23/2024 |
0.18.1 | 199 | 6/21/2024 |
0.18.0 | 2,729 | 6/1/2024 |
0.17.1 | 568 | 5/20/2024 |
0.17.0 | 115,209 | 10/27/2023 |
0.16.2 | 55,116 | 1/24/2023 |
0.16.1 | 10,025 | 11/14/2022 |
0.16.0 | 510 | 11/12/2022 |
0.15.0 | 57,467 | 4/24/2022 |
0.14.0 | 8,120 | 2/4/2022 |
0.13.0 | 35,614 | 8/31/2021 |
0.12.0 | 2,717 | 5/31/2021 |
0.11.0 | 13,869 | 12/24/2020 |
0.10.0 | 633 | 12/23/2020 |
0.9.1 | 48,593 | 6/18/2020 |
0.9.0 | 817 | 6/17/2020 |
0.8.0 | 61,515 | 4/19/2020 |
0.7.6 | 50,417 | 1/28/2020 |
0.7.5 | 693 | 1/28/2020 |
0.7.4 | 1,019,977 | 5/11/2019 |
0.7.3 | 3,326 | 2/6/2019 |
0.7.2 | 5,535 | 4/4/2018 |
0.7.1 | 7,231 | 1/12/2018 |
0.7.0 | 1,244 | 1/11/2018 |
0.6.0 | 1,448 | 12/23/2017 |
0.5.0 | 1,244 | 12/10/2017 |
0.4.0 | 1,234 | 12/9/2017 |
0.3.6 | 1,429 | 11/19/2017 |
0.3.5 | 1,214 | 11/19/2017 |
0.3.4 | 1,240 | 11/19/2017 |
0.3.3 | 1,257 | 11/19/2017 |
0.3.2 | 1,236 | 11/14/2017 |
0.3.1 | 1,204 | 5/15/2017 |
0.3.0 | 1,096 | 5/14/2017 |
0.2.0 | 1,175 | 5/5/2017 |
0.1.0 | 1,231 | 5/1/2017 |