diff --git a/Directory.Build.props b/Directory.Build.props
index 0e25055..f39d99e 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -14,8 +14,8 @@
MIT
README.md
Managed Code - Storage
- 2.1.7
- 2.1.7
+ 2.1.8
+ 2.1.8
true
diff --git a/ManagedCode.Storage.Core/Models/LocalFile.cs b/ManagedCode.Storage.Core/Models/LocalFile.cs
index da93e1f..ac7a4a7 100644
--- a/ManagedCode.Storage.Core/Models/LocalFile.cs
+++ b/ManagedCode.Storage.Core/Models/LocalFile.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
@@ -115,6 +116,62 @@ public void Dispose()
}
}
+ ~LocalFile()
+ {
+ Dispose();
+ }
+
+ private void CloseFileStream()
+ {
+ _stream?.Dispose();
+ _stream = null;
+ }
+
+ public void Close()
+ {
+ lock (_lockObject)
+ {
+ CloseFileStream();
+ }
+ }
+
+ public async Task CopyFromStreamAsync(Stream stream)
+ {
+ await stream.CopyToAsync(FileStream);
+ FileStream.Dispose();
+ return this;
+ }
+
+ public static async Task FromStreamAsync(Stream stream)
+ {
+ var file = new LocalFile();
+ await stream.CopyToAsync(file.FileStream);
+ file.FileStream.Dispose();
+
+ return file;
+ }
+
+ public static async Task FromStreamAsync(Stream stream, string fileName)
+ {
+ var file = FromFileName(fileName);
+ await stream.CopyToAsync(file.FileStream);
+ await file.FileStream.DisposeAsync();
+
+ return file;
+ }
+
+ public static LocalFile FromFileName(string fileName)
+ {
+ return new LocalFile(Path.Combine(Path.GetTempPath(), fileName));
+ }
+
+ public static LocalFile FromTempFile()
+ {
+ return new LocalFile();
+ }
+
+ #region Read
+
public string ReadAllText()
{
lock (_lockObject)
@@ -151,57 +208,90 @@ public Task ReadAllLinesAsync()
}
}
- ~LocalFile()
+ public byte[] ReadAllBytes()
{
- Dispose();
+ lock (_lockObject)
+ {
+ CloseFileStream();
+ return File.ReadAllBytes(FilePath);
+ }
}
- private void CloseFileStream()
+ public Task ReadAllBytesAsync()
{
- _stream?.Dispose();
- _stream = null;
+ lock (_lockObject)
+ {
+ CloseFileStream();
+ return File.ReadAllBytesAsync(FilePath);
+ }
}
- public void Close()
+ public IEnumerable ReadLines()
{
lock (_lockObject)
{
CloseFileStream();
+ return File.ReadLines(FilePath);
}
}
- public async Task CopyFromStreamAsync(Stream stream)
+ #endregion
+
+ #region Write
+
+ public void WriteAllText(string content)
{
- await stream.CopyToAsync(FileStream);
- FileStream.Dispose();
- return this;
+ lock (_lockObject)
+ {
+ CloseFileStream();
+ File.WriteAllText(FilePath, content);
+ }
}
- public static async Task FromStreamAsync(Stream stream)
+ public Task WriteAllTextAsync(string content)
{
- var file = new LocalFile();
- await stream.CopyToAsync(file.FileStream);
- file.FileStream.Dispose();
-
- return file;
+ lock (_lockObject)
+ {
+ CloseFileStream();
+ return File.WriteAllTextAsync(FilePath, content);
+ }
}
- public static async Task FromStreamAsync(Stream stream, string fileName)
+ public void WriteAllLines(IEnumerable contents)
{
- var file = FromFileName(fileName);
- await stream.CopyToAsync(file.FileStream);
- await file.FileStream.DisposeAsync();
+ lock (_lockObject)
+ {
+ CloseFileStream();
+ File.WriteAllLines(FilePath, contents);
+ }
+ }
- return file;
+ public Task WriteAllLinesAsync(IEnumerable contents)
+ {
+ lock (_lockObject)
+ {
+ CloseFileStream();
+ return File.WriteAllLinesAsync(FilePath, contents);
+ }
}
- public static LocalFile FromFileName(string fileName)
+ public void WriteAllBytes(byte[] bytes)
{
- return new LocalFile(Path.Combine(Path.GetTempPath(), fileName));
+ lock (_lockObject)
+ {
+ CloseFileStream();
+ File.WriteAllBytes(FilePath, bytes);
+ }
}
- public static LocalFile FromTempFile()
+ public Task WriteAllBytesAsync(byte[] bytes)
{
- return new LocalFile();
+ lock (_lockObject)
+ {
+ CloseFileStream();
+ return File.WriteAllBytesAsync(FilePath, bytes);
+ }
}
+
+ #endregion
}
\ No newline at end of file