From cfa26ce807933bb20aa589be85b5073f9e1112a5 Mon Sep 17 00:00:00 2001 From: Timerix Date: Sat, 22 Mar 2025 20:53:16 +0500 Subject: [PATCH] async methods in File --- DTLib/Filesystem/File.cs | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/DTLib/Filesystem/File.cs b/DTLib/Filesystem/File.cs index 4578631..021af49 100644 --- a/DTLib/Filesystem/File.cs +++ b/DTLib/Filesystem/File.cs @@ -60,25 +60,55 @@ public static class File return output; } - public static string ReadAllText(IOPath file) => ReadAllBytes(file).BytesToString(StringConverter.UTF8); + + public static async Task ReadAllBytesAsync(IOPath file) + { + using System.IO.FileStream stream = OpenRead(file); + int size = GetSize(file).ToInt(); + byte[] output = new byte[size]; + if (await stream.ReadAsync(output, 0, size).ConfigureAwait(false) < size) + throw new Exception("can't read all bytes"); + return output; + } + + public static string ReadAllText(IOPath file) => + ReadAllBytes(file).BytesToString(StringConverter.UTF8); + public static async Task ReadAllTextAsync(IOPath file) => + (await ReadAllBytesAsync(file)).BytesToString(StringConverter.UTF8); public static void WriteAllBytes(IOPath file, byte[] content) { using System.IO.FileStream stream = OpenWrite(file); stream.Write(content, 0, content.Length); } + public static async Task WriteAllBytesAsync(IOPath file, byte[] content) + { + using System.IO.FileStream stream = OpenWrite(file); + await stream.WriteAsync(content, 0, content.Length); + } - public static void WriteAllText(IOPath file, string content) => - WriteAllBytes(file, content.ToBytes(StringConverter.UTF8)); + public static async Task WriteAllText(IOPath file, string content) => + await WriteAllBytesAsync(file, content.ToBytes(StringConverter.UTF8)); + public static async Task WriteAllTextAsync(IOPath file, string content) => + await WriteAllBytesAsync(file, content.ToBytes(StringConverter.UTF8)); public static void AppendAllBytes(IOPath file, byte[] content) { using System.IO.FileStream stream = OpenAppend(file); stream.Write(content, 0, content.Length); } + + public static async Task AppendAllBytesAsync(IOPath file, byte[] content) + { + using System.IO.FileStream stream = OpenAppend(file); + await stream.WriteAsync(content, 0, content.Length); + } public static void AppendAllText(IOPath file, string content) => AppendAllBytes(file, content.ToBytes(StringConverter.UTF8)); + + public static async Task AppendAllTextAsync(IOPath file, string content) => + await AppendAllBytesAsync(file, content.ToBytes(StringConverter.UTF8)); public static System.IO.FileStream OpenRead(IOPath file) {