singulink/singulink.io.filesystem

FileSystem is a reliable cross-platform library that provides strongly-typed file/directory path manipulation and file system...

FileSystem is a reliable cross-platform library that provides strongly-typed file/directory path manipulation and file system access in

FileSystem is a reliable cross-platform library that provides strongly-typed file/directory path manipulation and file system...

Singulink.IO.FileSystem

Singulink.IO.FileSystem is a reliable cross-platform library that provides strongly-typed file/directory path manipulation and file system access in .NET. It has been designed to encourage developers to code with explicit intent in such a way that their applications can work seamlessly and bug free across both Unix and Windows file systems under all conditions. System.IO.* has numerous pitfalls that make 99% of file system code out in the wild fragile and problematic in edge cases. It also contains behavioral inconsistencies between Unix and Windows file systems that are abstracted and handled by this library so you don't have to worry about them.

About Singulink

We are a small team of engineers and designers dedicated to building beautiful, functional and well-engineered software solutions. We offer very competitive rates as well as fixed-price contracts and welcome inquiries to discuss any custom development / project support needs you may have.

This package is part of our Singulink Libraries collection. Visit https://github.com/Singulink to see our full list of publicly available libraries and other open-source projects.

Installation

The package is available on NuGet - simply install the Singulink.IO.FileSystem package.

Supported Runtimes: Anywhere .NET Standard 2.1+ is supported, including:

  • .NET Core 3.0+
  • Mono 6.4+
  • Xamarin.iOS 12.16+
  • Xamarin.Android 10.0+

Further Reading

Please head over to the project documentation site to view articles, examples and the fully documented API.

Versions

Quick list of the latest released versions

v1.0.2 - Jun 22, 2022

Fixed root directory not being set correctly on the paths returned from the IAbsoluteDirectoryPath.GetChild*() set of methods.

v1.0.1 - Jun 21, 2022

Fixed Equals() implementation on paths.

v1.0.0 - Jun 09, 2021

  • Added assembly location helpers to FilePath and DirectoryPath.
  • Removed unnecessary directory enumeration overloads.
  • Search options are now always optional, even when enumerating a directory using a search pattern.

v0.9.7 - Nov 26, 2020

  • Fixed missed UnauthorizedAccessException to UnauthorizedIOAccessException conversions in file I/O operations.

v0.9.6 - Nov 17, 2020

  • Consistency improvements for exception types thrown across platforms and methods.
  • IAbsoluteDirectoryPath.FileSystem no longer throws an exception for non-root/non-symlink directories on Windows.
  • A new UnauthorizedIOAccessException type that inherits from IOException was added which is now thrown instead of System.UnauthorizedAccessException so that the only exception type that needs to be handled around I/O operations is IOException.
  • UnauthorizedIOAccessException is thrown instead of returning no items when attempting to enumerate a directory that does not have access permissions.

v0.9.5 - Nov 11, 2020

  • Removed IAbsoluteDirectoryPath.IsReady since the underlying operation was the same as Exists.
  • Added IAbsolutePath.GetLastExistingDirectory() to make it easier to find the last valid existing directory in a path.
  • Added more Win32 interop calls to provide proper values for properties like DriveType and FileSystem for subfolder mounted network drives and symlinks.
  • Fixed additional exception inconsistencies between Unix and Windows.
  • Minor bug fixes.

v0.9.4 - Oct 15, 2020

Removed string mutation performance enhancements to ensure compatibility with future runtime releases.

v0.9.3 - Aug 19, 2020

Added strong name assembly signing.

v0.9.2 - Aug 04, 2020

Fixed some PathOptions restrictions and exception types being thrown in a few places.

v0.9.1 - Aug 01, 2020

Remove unnecessary dependencies.

v0.9.0 - Jul 31, 2020

Initial public release.

Library Stats (Sep 17, 2022)

Subscribers: 2
Stars: 16
Forks: 2
Issues: 0

Unity IO is made to try to remove the pain of working with Unity's file...

Unity IO is made to try to remove the pain of working with Unity's file system

Unity IO is made to try to remove the pain of working with Unity's file...

DokanCloudFS is a virtual filesystem for various publicly accessible cloud storage services on the Microsoft...

DokanCloudFS is a virtual filesystem for various publicly accessible cloud storage services on the Microsoft Windows platform

DokanCloudFS is a virtual filesystem for various publicly accessible cloud storage services on the Microsoft...

NoDb - a "no database" file system storage for

I named the project NoDb in a nod to the NoSql movement, which uses document databases rather than the more traditional, relational SQL databases

NoDb - a "no database" file system storage for

FileCurator is a library used to simplify file access and management on your system

It aims to make accessing a local file as simple as accessing a URL or 3rd party system like Dropbox

FileCurator is a library used to simplify file access and management on your system

Local file support for Blazor (Wasm only)

The LocalFiles library contains a Blazor component that makes it super simple to load local files into your

Local file support for Blazor (Wasm only)

SharpDir is a simple code set to search both local and remote file systems for...

SharpDir is a simple code set to search both local and remote file systems for files using the same SMB process as dir

SharpDir is a simple code set to search both local and remote file systems for...

An advanced serialization library for Sitecore 7 and above

Rainbow is designed to be a complete replacement for the Sitecore serialization format and filesystem organization, as well as enabling cross-source item comparison

An advanced serialization library for Sitecore 7 and above

The core objects and interfaces of the IPFS (Inter Planetary File System) for

The core objects and interfaces of the Documentation web site

The core objects and interfaces of the IPFS (Inter Planetary File System) for
At the core of the library is IFileSystem and FileSystem
NET portable class library (PCL) for the InterPlanetary File System (IPFS) API

RegFS, a sample project for the Windows Projected File System (ProjFS) ported to the C#...

Windows Projected File System (ProjFS) ported to the C# language and using

RegFS, a sample project for the Windows Projected File System (ProjFS) ported to the C#...