Gapotchenko.FX.IO.FileSystems.MSCfb
2026.7.2
Prefix Reserved
dotnet add package Gapotchenko.FX.IO.FileSystems.MSCfb --version 2026.7.2
NuGet\Install-Package Gapotchenko.FX.IO.FileSystems.MSCfb -Version 2026.7.2
<PackageReference Include="Gapotchenko.FX.IO.FileSystems.MSCfb" Version="2026.7.2" />
<PackageVersion Include="Gapotchenko.FX.IO.FileSystems.MSCfb" Version="2026.7.2" />
<PackageReference Include="Gapotchenko.FX.IO.FileSystems.MSCfb" />
paket add Gapotchenko.FX.IO.FileSystems.MSCfb --version 2026.7.2
#r "nuget: Gapotchenko.FX.IO.FileSystems.MSCfb, 2026.7.2"
#:package Gapotchenko.FX.IO.FileSystems.MSCfb@2026.7.2
#addin nuget:?package=Gapotchenko.FX.IO.FileSystems.MSCfb&version=2026.7.2
#tool nuget:?package=Gapotchenko.FX.IO.FileSystems.MSCfb&version=2026.7.2
Overview
This module implements the MS-CFB (Compound File Binary Format) file system and integrates it with the virtual file system (VFS) abstraction layer, allowing compound files to be accessed and manipulated using a unified file system interface.
Overview
MS-CFB is a structured storage format that embeds a complete file system within a single file.
It underpins a variety of widespread file formats, such as Microsoft Office binary documents, .msi files, and many others.
Gapotchenko.FX.IO.FileSystems.MSCfb exposes a compound file via MSCfbFileSystem class, which implements the usual VFS surface (IVirtualFileSystem / IFileSystemView), including streams, directories, enumeration, and timestamps.
Paths in MSCfbFileSystem are case-insensitive in accordance with the format specification.
Conceptually, the MS-CFB format can be viewed as a compact, portable, and standardized file system encapsulated within a single file, similar in spirit to FAT12 or FAT16.
MSCfbFileSystem
MSCfbFileSystem class is the primary entry point for working with a compound file.
It can be instantiated directly over an existing System.IO.Stream,
or accessed via MSCfbFileSystem.Storage property to open or create a compound file on disk (or any other backing store exposed through VfsLocation or VfsReadOnlyLocation).
Opening from a stream
For a compound file you already have as a stream (for example from a network or an in-memory buffer):
using Gapotchenko.FX.IO.FileSystems.MSCfb;
using Gapotchenko.FX.IO.Vfs;
void ReadFromStream(Stream stream)
{
using var vfs = new MSCfbFileSystem(stream);
if (vfs.FileExists("README.txt"))
{
string text = vfs.ReadAllFileText("README.txt");
// ...
}
}
Use the constructor overloads when you need a writable file system, leave-open behavior, or MSCfbFileSystemOptions. There is also MSCfbFileSystem.CreateAsync for asynchronous construction.
Opening or creating a file via storage
MSCfbFileSystem.Storage property implements IFileSystemStorage<IMSCfbFileSystem, MSCfbFileSystemOptions> interface and follows the same patterns as other mountable VFS types: read-only open, create/overwrite, and full OpenFile/WriteFile/ReadFile semantics via extension methods provided byGapotchenko.FX.IO.Vfs module.
using Gapotchenko.FX.IO.FileSystems.MSCfb;
using Gapotchenko.FX.IO.Vfs;
// Open an existing compound file for reading (from a local path)
using var cfb = MSCfbFileSystem.Storage.ReadFile("document.cfb");
// Create a new compound file (or truncate an existing one)
using var newCfb = MSCfbFileSystem.Storage.CreateFile("new.cfb");
newCfb.WriteAllFileText("README.txt", "Hello from MS-CFB");
VfsReadOnlyLocation and VfsLocation accept implicit conversions from string (paths on the host file system) or you can specify a custom IFileSystemView to open storage from a non-local backend.
Related Modules
- Gapotchenko.FX.IO.Vfs - Provides the virtual file system abstraction layer
- Gapotchenko.FX.IO.FileSystems - Provides base functionality for file system implementations
Other Modules
Let's continue with a look at some other modules provided by Gapotchenko.FX:
- Gapotchenko.FX
- Gapotchenko.FX.AppModel.Information
- Gapotchenko.FX.Collections
- Gapotchenko.FX.Console
- Gapotchenko.FX.Data
- Gapotchenko.FX.Diagnostics
- Gapotchenko.FX.IO
- Gapotchenko.FX.Linq
- Gapotchenko.FX.Math
- Gapotchenko.FX.Memory
- Gapotchenko.FX.Security.Cryptography
- Gapotchenko.FX.Text
- Gapotchenko.FX.Threading
- Gapotchenko.FX.Tuples
- Gapotchenko.FX.Versioning
Or look at the full list of modules.
| Product | Versions 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 is compatible. 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. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.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 was computed. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. 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. |
-
.NETFramework 4.7.2
- Gapotchenko.FX.IO.FileSystems (>= 2026.7.2)
- System.Memory (>= 4.6.3)
-
.NETStandard 2.0
- Gapotchenko.FX.IO.FileSystems (>= 2026.7.2)
- System.Memory (>= 4.6.3)
-
.NETStandard 2.1
- Gapotchenko.FX.IO.FileSystems (>= 2026.7.2)
-
net10.0
- Gapotchenko.FX.IO.FileSystems (>= 2026.7.2)
-
net8.0
- Gapotchenko.FX.IO.FileSystems (>= 2026.7.2)
-
net9.0
- Gapotchenko.FX.IO.FileSystems (>= 2026.7.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.