Tesses.VirtualFilesystem.DiscUtils 1.0.0

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

// Install Tesses.VirtualFilesystem.DiscUtils as a Cake Tool
#tool nuget:?package=Tesses.VirtualFilesystem.DiscUtils&version=1.0.0                

Tesses.VirtualFilesystem

A library for virtual filesystems in .NET

Nuget

Tesses.VirtualFilesystem.Base

Downloads Version

Tesses.VirtualFilesystem

Downloads Version

Tesses.VirtualFilesystem.Local

Downloads Version

Tesses.VirtualFilesystem.Zio

Downloads Version

Tesses.VirtualFilesystem.Extensions

Downloads Version

License

GPL3-only Licensed under GPL3

How to use (way 1 uses LocalFileSystem)

using Tesses.VirtualFilesystem;
using Tesses.VirtualFilesystem.Filesystems;
using Tesses.VirtualFilesystem.Extensions;

LocalFileSystem fileSystem = new LocalFileSystem();
//Special.Home is $HOME on linux (usually /home/username) or %UserProfile% on Windows (usually C:\Users\username)
foreach(var item in fileSystem.EnumerateDirectories(Special.Home))
{
    Console.WriteLine(item.Name); //this is name
    //Console.WriteLine(item.Path) //this is entire path
}
fileSystem.WriteAllText(Special.CurDir / "file.txt","Some Text"); //write to file in current directory
fileSystem.CreateDirectory(Special.CurDir / "dir1/dir2/dir3" / "dir4"); //shows how you can use normal paths too within special ones

//enumerates directories in linux home dir (not cross platform) 
foreach(var item in fileSystem.EnumerateDirectories("/home")) 
{
    Console.WriteLine(item.Name);
}

fileSystem.CreateSymlink("fileToLinkTo","symlinkFile");
fileSystem.ReadSymlink("symlinkFile"); //should be equal to Special.CurDir / "fileToLinkTo" in this instance

fileSystem.CreateHardlink("originalFileName","newFileName"); //for people who dont know what hardlinks are, a simple explanation is a hard link is giving a file another name (not copying) and can only be done to files and on same real filesystem

fileSystem.DirectoryExists(Special.Home); //should be true if directory exists

How to use (way 2 uses LocalFileSystem)

using Tesses.VirtualFilesystem;
using Tesses.VirtualFilesystem.Filesystems;
using Tesses.VirtualFilesystem.Extensions;

var res=fileSystem.OpenDirectory(Special.Home);
foreach(var item in res)
{
    if(item.IsDirectoryPointer)
    {
        var dir=item.AsDirectoryPointer();
        //dir.EnumerateDirectories(); //enumerate directories IEnumerable<DirectoryPointer>
        Console.WriteLine($"DIR: {item.Name}");
    }
    if(item.IsFilePointer)
    {
        var file=item.AsFilePointer();
        //file.Delete(); //deletes file
        Console.WriteLine($"FILE: {item.Name}");
    }
    if(item.IsSymlinkPointer)
    {
        var link = item.AsSymlinkPointer();
        //do something with symlink
        //link.Target = Special.Music; //sets link to Music folder
        Console.WriteLine($"LINK: {item.Name}");
    }
}

How to implement

Inherit from SyncFileSystem or AsyncFileSystem

Look in the source for Tesses.VirtualFilesystem.Local for help with SyncFileSystem (I might add documentation for this later)

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

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0 80 7/22/2024