dotnet add package Zio --version 0.18.0
NuGet\Install-Package Zio -Version 0.18.0
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="Zio" Version="0.18.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Zio --version 0.18.0
#r "nuget: Zio, 0.18.0"
#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.
// Install Zio as a Cake Addin
#addin nuget:?package=Zio&version=0.18.0

// Install Zio as a Cake Tool
#tool nuget:?package=Zio&version=0.18.0

Zio Build Status Coverage Status NuGet

<img align="right" width="160px" height="160px" src="">

Zio provides a simple, powerful, cross-platform filesystem abstraction for .NET with many built-ins filesystems.


  • Compatible with .NET 4.6+, netstandard2.0, netstandard2.1 and net7.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 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)
    • 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 with ZipArchiveMode.Read
    • 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


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.


The documentation is directly available as part of this repository in the /doc folder.


Zio is available as a NuGet package: NuGet


In order to build Zio, you need to install Visual Studio 2022 with latest .NET 7.0


This software is released under the BSD-Clause 2 license.


The logo is File by jeff from the Noun Project


Alexandre MUTEL aka xoofx

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 is compatible.  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 net461 was computed.  net462 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (16)

Showing the top 5 NuGet packages that depend on Zio:

Package Downloads

Package Description


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


Common code for the Transporter client.


Package Description


Test262 Harness for .NET

GitHub repositories (5)

Showing the top 5 popular GitHub repositories that depend on Zio:

Repository Stars
Blockchain in C#/.NET for on-chain, decentralized gaming
:snowflake: :video_game: Emulator Frontend and SDK
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.
A management application for the remarkable tablet
An extensible library providing C# PInvoke codegen from C/C++ files for .NET
Version Downloads Last updated
0.18.0 1,002 6/1/2024
0.17.1 469 5/20/2024
0.17.0 28,524 10/27/2023
0.16.2 49,903 1/24/2023
0.16.1 9,719 11/14/2022
0.16.0 490 11/12/2022
0.15.0 56,829 4/24/2022
0.14.0 7,831 2/4/2022
0.13.0 35,198 8/31/2021
0.12.0 2,692 5/31/2021
0.11.0 13,308 12/24/2020
0.10.0 611 12/23/2020
0.9.1 48,398 6/18/2020
0.9.0 793 6/17/2020
0.8.0 61,419 4/19/2020
0.7.6 49,969 1/28/2020
0.7.5 668 1/28/2020
0.7.4 980,030 5/11/2019
0.7.3 3,189 2/6/2019
0.7.2 5,326 4/4/2018
0.7.1 6,860 1/12/2018
0.7.0 1,196 1/11/2018
0.6.0 1,407 12/23/2017
0.5.0 1,223 12/10/2017
0.4.0 1,210 12/9/2017
0.3.6 1,400 11/19/2017
0.3.5 1,185 11/19/2017
0.3.4 1,208 11/19/2017
0.3.3 1,235 11/19/2017
0.3.2 1,215 11/14/2017
0.3.1 1,183 5/15/2017
0.3.0 1,077 5/14/2017
0.2.0 1,148 5/5/2017
0.1.0 1,186 5/1/2017