Soenneker.Utils.File 4.0.2238

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package Soenneker.Utils.File --version 4.0.2238
                    
NuGet\Install-Package Soenneker.Utils.File -Version 4.0.2238
                    
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="Soenneker.Utils.File" Version="4.0.2238" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Soenneker.Utils.File" Version="4.0.2238" />
                    
Directory.Packages.props
<PackageReference Include="Soenneker.Utils.File" />
                    
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 Soenneker.Utils.File --version 4.0.2238
                    
#r "nuget: Soenneker.Utils.File, 4.0.2238"
                    
#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 Soenneker.Utils.File@4.0.2238
                    
#: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=Soenneker.Utils.File&version=4.0.2238
                    
Install as a Cake Addin
#tool nuget:?package=Soenneker.Utils.File&version=4.0.2238
                    
Install as a Cake Tool

alternate text is missing from this package README image alternate text is missing from this package README image alternate text is missing from this package README image alternate text is missing from this package README image

Soenneker.Utils.File

DI-friendly asynchronous file reading, writing, copying, moving, enumeration, metadata, and cleanup operations.

Installation

dotnet add package Soenneker.Utils.File

Registration

builder.Services.AddFileUtilAsSingleton();

AddFileUtilAsScoped() is also available and registers the memory-stream dependency with the matching lifetime.

Read and write

string text = await files.Read(path, cancellationToken: cancellationToken);
List<string> lines = await files.ReadAsLines(path, cancellationToken: cancellationToken);
byte[] bytes = await files.ReadToBytes(path, cancellationToken: cancellationToken);

await files.Write(path, text, cancellationToken: cancellationToken);
await files.Append(path, "next entry\n", cancellationToken: cancellationToken);

Text writes use UTF-8 without a byte-order mark. Reads detect a byte-order mark when present. Whole-file methods materialize the complete contents; use OpenRead() for large or streaming workloads.

TryRead() and TryReadToHashSet() return null and optionally log when reading fails. Requested cancellation still throws OperationCanceledException rather than being converted to null.

Stream ownership

await using FileStream input = files.OpenRead(path);
await using FileStream output = files.OpenWrite(destinationPath);

using MemoryStream buffered = await files.ReadToMemoryStream(path, cancellationToken: cancellationToken);

The caller owns every stream returned by this package. OpenWrite() creates missing parent directories and truncates an existing file. Write(path, sourceStream) copies from the source's current position, leaves the source open, and replaces the destination contents.

Copy and move

await files.Copy(sourcePath, destinationPath, cancellationToken: cancellationToken);
await files.Move(sourcePath, archivePath, cancellationToken: cancellationToken);
await files.CopyRecursively(sourceDirectory, destinationDirectory, cancellationToken: cancellationToken);

Copy() creates the destination parent and overwrites the destination. It is not transactional: a failed or cancelled copy can leave a partial destination.

Move() uses the filesystem's native overwrite move when available. Its cross-volume fallback copies to a temporary file beside the destination, publishes that completed copy, then deletes the source. If cancellation occurs after publication but before source deletion, both complete files can remain.

Recursive copy skips inaccessible entries and does not follow symbolic links, junctions, or other reparse points. It copies discovered files and their required parent directories; empty source directories are not reproduced.

Deletion and bulk mutation

bool removed = await files.DeleteIfExists(path, cancellationToken: cancellationToken);
await files.DeleteAll(directory, cancellationToken: cancellationToken);

DeleteAll() removes only files immediately inside the directory, not descendants. TryDelete(), TryDeleteIfExists(), and TryDeleteAll() convert I/O failures to false, but propagate requested cancellation.

Bulk rename, attribute removal, recursive copy, and multi-file deletion are incremental operations. Cancellation or a later conflict does not undo earlier filesystem changes. Resolve and validate any user-controlled root path before calling destructive methods.

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

NuGet packages (37)

Showing the top 5 NuGet packages that depend on Soenneker.Utils.File:

Package Downloads
Soenneker.Utils.Json

Serializes, deserializes, validates, formats, and writes JSON with System.Text.Json or Newtonsoft.Json.

Soenneker.Git.Util

Asynchronous Git operations, repository discovery, and bounded batch processing using bundled Git distributions.

Soenneker.Utils.Dotnet

A utility library for the dotnet executable

Soenneker.Google.Credentials

An async thread-safe singleton for Google OAuth credentials

Soenneker.Utils.File.Download

Provides a flexible utility for downloading files from specified URIs, with thread-safe concurrency and automatic file name conflict handling

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
4.0.2246 0 9/1/2026
4.0.2245 0 8/31/2026
4.0.2244 0 8/31/2026
4.0.2243 0 8/31/2026
4.0.2242 0 8/31/2026
4.0.2241 0 8/31/2026
4.0.2240 117 8/31/2026
4.0.2239 174 8/31/2026
4.0.2238 75 8/30/2026
4.0.2237 417 8/30/2026
4.0.2235 2,875 8/30/2026
4.0.2234 2,497 8/30/2026
4.0.2233 38 8/30/2026
4.0.2232 109 8/30/2026
4.0.2231 1,126 8/29/2026
4.0.2230 5,843 8/29/2026
4.0.2228 65 8/29/2026
4.0.2227 255 8/29/2026
4.0.2226 24,100 8/26/2026
4.0.2223 12,741 8/22/2026
Loading failed

Make cross-volume file moves failure safe