{"id":18339039,"url":"https://github.com/xoofx/zio","last_synced_at":"2026-04-17T09:01:43.034Z","repository":{"id":20457625,"uuid":"89966158","full_name":"xoofx/zio","owner":"xoofx","description":"A cross-platform abstract/virtual filesystem framework with many built-ins filesystems for .NET","archived":false,"fork":false,"pushed_at":"2026-02-22T15:33:06.000Z","size":804,"stargazers_count":915,"open_issues_count":18,"forks_count":65,"subscribers_count":42,"default_branch":"main","last_synced_at":"2026-03-09T02:36:15.762Z","etag":null,"topics":["dotnet","dotnet-core","filesystem","filesystem-api","vfs"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xoofx.png","metadata":{"files":{"readme":"readme.md","changelog":"changelog.md","contributing":null,"funding":".github/FUNDING.yml","license":"license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["xoofx"]}},"created_at":"2017-05-01T21:51:24.000Z","updated_at":"2026-03-08T23:19:02.000Z","dependencies_parsed_at":"2023-02-14T14:40:32.652Z","dependency_job_id":"519863ed-4b64-4efc-84c9-b6c7c6b51120","html_url":"https://github.com/xoofx/zio","commit_stats":{"total_commits":275,"total_committers":10,"mean_commits":27.5,"dds":"0.23272727272727278","last_synced_commit":"24cc3483a0b1e109ad263dc0eb425699937606f2"},"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"purl":"pkg:github/xoofx/zio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoofx%2Fzio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoofx%2Fzio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoofx%2Fzio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoofx%2Fzio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xoofx","download_url":"https://codeload.github.com/xoofx/zio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xoofx%2Fzio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31922399,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotnet","dotnet-core","filesystem","filesystem-api","vfs"],"created_at":"2024-11-05T20:16:16.871Z","updated_at":"2026-04-17T09:01:43.029Z","avatar_url":"https://github.com/xoofx.png","language":"C#","funding_links":["https://github.com/sponsors/xoofx"],"categories":[],"sub_categories":[],"readme":"# Zio [![ci](https://github.com/xoofx/zio/actions/workflows/ci.yml/badge.svg)](https://github.com/xoofx/zio/actions/workflows/ci.yml) [![Coverage Status](https://coveralls.io/repos/github/xoofx/zio/badge.svg?branch=main)](https://coveralls.io/github/xoofx/zio?branch=main) [![NuGet](https://img.shields.io/nuget/v/Zio.svg)](https://www.nuget.org/packages/Zio/)\n\n\u003cimg align=\"right\" width=\"160px\" height=\"160px\" src=\"https://raw.githubusercontent.com/xoofx/zio/main/img/zio.png\"\u003e\n\nZio provides a simple, powerful, cross-platform **filesystem abstraction for .NET** with many built-ins filesystems.\n\n## Features\n\n- Compatible with `netstandard2.0`, `netstandard2.1` and `net8.0+`\n- API providing all operations provided by the regular System.IO API (e.g File.Move, Directory.Delete... etc.)\n  - Allowing atomic filesystem operations (e.g File.Replace...)\n- A simple interface abstraction [`IFileSystem`](https://github.com/xoofx/zio/blob/main/src/Zio/IFileSystem.cs)\n- Supports for filesystem watcher through the `IFileSystem.Watch` method and the [`IFileSystemWatcher`](https://github.com/xoofx/zio/blob/main/src/Zio/IFileSystemWatcher.cs) interface\n  - For all builtin filesystems (aggregates, memory...etc.)\n- All paths are normalized through a lightweight uniform path struct [`UPath`](https://github.com/xoofx/zio/blob/main/src/Zio/UPath.cs)\n- Multiple built-ins filesystems:\n  - `PhysicalFileSystem` to access the physical disks, directories and folders.\n    - 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`)\n  - `MemoryFileSystem` to access a filesystem in memory:\n    - Trying to be 100% compatible with a true `PhysicalFileSystem` (including exceptions)\n    - Efficient concurrency with a per node (file or directory) locking mechanism\n    - A safe hierarchical locking strategy (following [Unix kernel recommendations for directory locking](https://www.kernel.org/doc/Documentation/filesystems/directory-locking))\n    - Support for `FileShare.Read`, `FileShare.Write` and `FileShare.ReadWrite`\n    - Internally support for filesystem atomic operations (`File.Replace`)\n  - `ZipArchiveFileSystem` to access zip archives:\n    - This filesystem is a wrapper around the [`ZipArchive`](https://docs.microsoft.com/en-us/dotnet/api/system.io.compression.ziparchive?view=netcore-3.1) class\n\t- It can work in case sensitive and case insensitive mode\n\t- Support for `FileShare.Read` with `ZipArchiveMode.Read`\n  - On top of these final filesystem, you can compose more complex filesystems:\n    - `AggregateFileSystem` providing a read-only filesystem aggregating multiple filesystem that offers a merged view\n    - `MountFileSystem` to mount different filesystems at a specific mount point name\n    - `SubFileSystem` to view a sub-folder of another filesystem as if it was a root `/` directory\n    - `ReadOnlyFileSystem` to interact safely with another filesystem in read-only mode\n- Higher level API similar to `FileSystemEntry`, `FileEntry` and `DirectoryEntry` offering a similar API to their respective `FileSystemInfo`, `FileInfo`, `DirectoryInfo`\n\n## Usage\n\nAccessing a physical filesystem:\n\n```c#\nvar fs = new PhysicalFileSystem();\nforeach(var dir in fs.EnumerateDirectories(\"/mnt/c\"))\n{\n    // ...\n}\n```\n\nUsing an in-memory filesystem:\n\n```c#\nvar fs = new MemoryFileSystem();\nfs.WriteAllText(\"/temp.txt\", \"This is a content\");\nif (fs.FileExists(\"/temp.txt\"))\n{\n    Console.WriteLine(\"The content of the file:\" + fs.ReadAllText(\"/temp.txt\"))\n}\n```\n\nThe following documentation provides more information about the API and how to use it.\n\n## Documentation\n\nThe [documentation](https://github.com/xoofx/zio/tree/main/doc) is directly available as part of this repository in the `/doc` folder.\n\n## Download\n\nZio is available as a NuGet package: [![NuGet](https://img.shields.io/nuget/v/Zio.svg)](https://www.nuget.org/packages/Zio/)\n\n## Build\n\nIn order to build Zio, you need to install Visual Studio 2022 with latest [.NET 9.0 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/9.0)\n\n## License\n\nThis software is released under the [BSD-Clause 2 license](https://github.com/xoofx/zio/blob/main/license.txt).\n\n## Credits\n\nThe logo is `File` by [jeff](https://thenounproject.com/jeff955/) from the Noun Project\n\n## Author\n\nAlexandre MUTEL aka [xoofx](https://xoofx.github.io)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxoofx%2Fzio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxoofx%2Fzio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxoofx%2Fzio/lists"}