VOOZH about

URL: https://www.nuget.org/packages/LTRData.ExFat.DiscUtils/

⇱ NuGet Gallery | LTRData.ExFat.DiscUtils 1.0.17




LTRData.ExFat.DiscUtils 1.0.17

Suggested Alternatives

LTRData.DiscUtils.ExFat

Additional Details

Package moved to DiscUtils repository.

dotnet add package LTRData.ExFat.DiscUtils --version 1.0.17
 
 
NuGet\Install-Package LTRData.ExFat.DiscUtils -Version 1.0.17
 
 
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="LTRData.ExFat.DiscUtils" Version="1.0.17" />
 
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="LTRData.ExFat.DiscUtils" Version="1.0.17" />
 
Directory.Packages.props
<PackageReference Include="LTRData.ExFat.DiscUtils" />
 
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add LTRData.ExFat.DiscUtils --version 1.0.17
 
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: LTRData.ExFat.DiscUtils, 1.0.17"
 
 
#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.
#:package LTRData.ExFat.DiscUtils@1.0.17
 
 
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=LTRData.ExFat.DiscUtils&version=1.0.17
 
Install as a Cake Addin
#tool nuget:?package=LTRData.ExFat.DiscUtils&version=1.0.17
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

ExFat

An exFAT accessor library.

Fork

This fork is LTRData.ExFat.

This is a fork of ExFat.DiscUtils. The main goal of this fork is more efficient, safer and faster code at the cost of dropping support for some old versions of .NET Framework. It depends of LTRData.DiscUtils fork of DiscUtils instead of the upstream DiscUtils.DiscUtils, to get better performance in asynchronous calls and Span<byte>-based calls.

Summary

ExFat allows to manipulate an exFAT formatted partition (provided as a System.IO.Stream). It comes with two packages:

  • The core package ExFat.Core available from NuGet, which allows simple exFAT management at three different levels (partition, entry and path).
  • The DiscUtils package ExFat.DiscUtils available from NuGet, which depends on DiscUtils package.

Currently, ExFat.Core does what it says: files/directories manipulation at any level. DiscUtils support is on its way and should be released in the very next few days.

ExFat.Core works at three levels:

  1. Lowest level: partition access. This allows to manipulate clusters, allocation bitmap, directory entries and clusterr streams.
  2. Middle level: entry access. Files/directories can be used to read/write content.
  3. High level: path access. This works as you would expect using file paths.

ExFat.DiscUtils is also a high-level access (using paths) with implementation for DiscUtils.

Because it is still under development, you can see pending features state here.

Samples

All examples assume you have a Stream containing an exFAT partition.

// Access at partition-level. Most efficient, most dangerous.
// Integrity is not guaranteed at this level, 
// user needs to make all neceassary operations in right order.
using(var partition = new ExFatPartition(partitionStream))
{
 // returns all entries (including bitmap, volume label, etc.) from root directory
 var entries = partition.GetEntries(partition.RootDirectoryDataDescriptor);

 // returns all files/directories meta entries
 var metaEntries = partition.GetMetaEntries(partition.RootDirectoryDataDescriptor);

 // assuming there is one, of course (but we're in a sample)
 var someDirectory = metaEntries.First(e => e.IsDirectory);
 var directoryMetaEntries = partition.GetMetaEntries(someDirectory.DataDescriptor);

 var someFile = metaEntries.First(e => !e.IsDirectory);
 using(var dataStream = partition.OpenDataStream(someFile.DataDescriptor, FileAccess.Read))
 { }
}
// Access at entry level. Quite fast, since user has to track entries.
// Integrity is guaranteed. File attributes are not honored (maybe one day...)
using(var entryFilesystem = new ExFatEntryFilesystem(partitionStream))
{
 var someFileEntry = entryFilesystem.FindChild(filesystem.RootDirectory, "someFile");
 using(var fileStream = entryFilesystem.OpenFile(someFileEntry, FileAccess.Read)
 { }

 // finding one file in a directory requires two steps
 var someDirectoryEntry = entryFilesystem.FindChild(filesystem.RootDirectory, "someDirectory");
 var someChildFileEntry = entryFilesystem.FindChild(someDirectoryEntry, "someDirectory");
}
// Access at path level. Uses a path cache to retrieve entries, 
// so speed is not as good (but not that bad either)
// since there is not drive, paths only specify the directory chain
// (so "a\b\c" for example)
using(var pathFilesystem = new ExFatPathFilesystem(partitionStream))
{
 var rootEntries = pathFilesystem.EnumerateEntries("\"); // "" works too for root
 var childEntries = pathFilesystem.EnumerateEntries(@"\somedir"); // "somedir" works too
 using(var s = pathFilesystem.Open(@"a\b\c", FileMode.Open, FileAccess.Read)
 { }
}

Current build status (for people who care... If you ever meet one): 👁 Build status

Product Versions Compatible and additional computed target framework versions.
.NET net5.0 net5.0 was computed.  net5.0-windows net5.0-windows was computed.  net6.0 net6.0 was computed.  net6.0-android net6.0-android was computed.  net6.0-ios net6.0-ios was computed.  net6.0-maccatalyst net6.0-maccatalyst was computed.  net6.0-macos net6.0-macos was computed.  net6.0-tvos net6.0-tvos was computed.  net6.0-windows net6.0-windows was computed.  net7.0 net7.0 was computed.  net7.0-android net7.0-android was computed.  net7.0-ios net7.0-ios was computed.  net7.0-maccatalyst net7.0-maccatalyst was computed.  net7.0-macos net7.0-macos was computed.  net7.0-tvos net7.0-tvos was computed.  net7.0-windows net7.0-windows was computed.  net8.0 net8.0 is compatible.  net8.0-android net8.0-android was computed.  net8.0-browser net8.0-browser was computed.  net8.0-ios net8.0-ios was computed.  net8.0-maccatalyst net8.0-maccatalyst was computed.  net8.0-macos net8.0-macos was computed.  net8.0-tvos net8.0-tvos was computed.  net8.0-windows net8.0-windows was computed.  net9.0 net9.0 is compatible.  net9.0-android net9.0-android was computed.  net9.0-browser net9.0-browser was computed.  net9.0-ios net9.0-ios was computed.  net9.0-maccatalyst net9.0-maccatalyst was computed.  net9.0-macos net9.0-macos was computed.  net9.0-tvos net9.0-tvos was computed.  net9.0-windows net9.0-windows was computed.  net10.0 net10.0 was computed.  net10.0-android net10.0-android was computed.  net10.0-browser net10.0-browser was computed.  net10.0-ios net10.0-ios was computed.  net10.0-maccatalyst net10.0-maccatalyst was computed.  net10.0-macos net10.0-macos was computed.  net10.0-tvos net10.0-tvos was computed.  net10.0-windows net10.0-windows was computed. 
.NET Core netcoreapp2.0 netcoreapp2.0 was computed.  netcoreapp2.1 netcoreapp2.1 was computed.  netcoreapp2.2 netcoreapp2.2 was computed.  netcoreapp3.0 netcoreapp3.0 was computed.  netcoreapp3.1 netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 netstandard2.0 is compatible.  netstandard2.1 netstandard2.1 is compatible. 
.NET Framework net46 net46 is compatible.  net461 net461 was computed.  net462 net462 was computed.  net463 net463 was computed.  net47 net47 was computed.  net471 net471 was computed.  net472 net472 was computed.  net48 net48 is compatible.  net481 net481 was computed. 
MonoAndroid monoandroid monoandroid was computed. 
MonoMac monomac monomac was computed. 
MonoTouch monotouch monotouch was computed. 
Tizen tizen40 tizen40 was computed.  tizen60 tizen60 was computed. 
Xamarin.iOS xamarinios xamarinios was computed. 
Xamarin.Mac xamarinmac xamarinmac was computed. 
Xamarin.TVOS xamarintvos xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on LTRData.ExFat.DiscUtils:

Package Downloads
LTRData.DiscUtils.Dokan

Mounts DiscUtils IFileSystem implementations using Dokan file system driver

GitHub repositories

This package is not used by any popular GitHub repositories.