diff --git a/Frends.Files.Write/CHANGELOG.md b/Frends.Files.Write/CHANGELOG.md index 7e6e0c2..3b0443b 100644 --- a/Frends.Files.Write/CHANGELOG.md +++ b/Frends.Files.Write/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## [1.5.0] - 2026-06-23 +### Fixed +- Fix stale reads on network storage writes. + ## [1.4.0] - 2025-11-04 ### Fixed - Returning correct file size diff --git a/Frends.Files.Write/Frends.Files.Write/Frends.Files.Write.csproj b/Frends.Files.Write/Frends.Files.Write/Frends.Files.Write.csproj index e0392f2..e83ef42 100644 --- a/Frends.Files.Write/Frends.Files.Write/Frends.Files.Write.csproj +++ b/Frends.Files.Write/Frends.Files.Write/Frends.Files.Write.csproj @@ -3,7 +3,7 @@ net6.0 Latest - 1.4.0 + 1.5.0 Frends Frends Frends diff --git a/Frends.Files.Write/Frends.Files.Write/Write.cs b/Frends.Files.Write/Frends.Files.Write/Write.cs index 189e38f..5435813 100644 --- a/Frends.Files.Write/Frends.Files.Write/Write.cs +++ b/Frends.Files.Write/Frends.Files.Write/Write.cs @@ -64,13 +64,18 @@ private static async Task ExecuteWrite(Input input, Options options) var encoding = GetEncoding(options.FileEncoding, options.EnableBom, options.EncodingInString); var fileMode = GetAndCheckWriteMode(options.WriteBehaviour, input.Path); - await using var fileStream = - new FileStream(input.Path, fileMode, FileAccess.Write, FileShare.Write, 4096, useAsync: true); - await using (var writer = new StreamWriter(fileStream, encoding)) + await using var fileStream = new FileStream( + input.Path, fileMode, FileAccess.Write, FileShare.Write, 4096, FileOptions.Asynchronous | FileOptions.WriteThrough); + + await using (var writer = new StreamWriter(fileStream, encoding, leaveOpen: true)) { await writer.WriteAsync(input.Content).ConfigureAwait(false); + await writer.FlushAsync().ConfigureAwait(false); } + // Explicitly flush OS-level buffers + fileStream.Flush(true); + return new Result(new FileInfo(input.Path)); }