From 683583cddb9f547beca9c30d17d7f32c058ead8b Mon Sep 17 00:00:00 2001 From: Vladimir Pecanac Date: Sun, 25 Oct 2026 13:28:45 +0100 Subject: [PATCH] WriteFileToTempFolder: move to .NET 10, add temp directory and DeleteOnClose examples --- .../TempFileCreatorTests.cs | 47 ++++++++++++++++++- .../WriteFileToTempFolder.Test.csproj | 10 ++-- .../WriteFileToTempFolder/Program.cs | 34 ++++++++++++-- .../WriteFileToTempFolder.csproj | 2 +- 4 files changed, 82 insertions(+), 11 deletions(-) diff --git a/files-csharp/WriteFileToTempFolder/WriteFileToTempFolder.Test/TempFileCreatorTests.cs b/files-csharp/WriteFileToTempFolder/WriteFileToTempFolder.Test/TempFileCreatorTests.cs index a40ec8777f..c36128381d 100644 --- a/files-csharp/WriteFileToTempFolder/WriteFileToTempFolder.Test/TempFileCreatorTests.cs +++ b/files-csharp/WriteFileToTempFolder/WriteFileToTempFolder.Test/TempFileCreatorTests.cs @@ -39,7 +39,7 @@ public void GivenSystemCreatedFileName_WhenSaving_TheContentIsAsExpected() public void GivenSystemSpecialFolderAndCustomName_WhenSaving_TheContentIsAsExpected() { //Arrange - var appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); + var appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); var tempFile = Path.Combine(appDataPath, "text.txt"); //Act @@ -51,4 +51,47 @@ public void GivenSystemSpecialFolderAndCustomName_WhenSaving_TheContentIsAsExpec //Assert Assert.Equal("Hello from CodeMaze!", tempFileContent); } -} \ No newline at end of file + + [Fact] + public void GivenTempSubdirectory_WhenSaving_TheContentIsAsExpected() + { + //Arrange + var tempDirectory = Directory.CreateTempSubdirectory("codemaze-"); + var tempFile = Path.Combine(tempDirectory.FullName, "text.txt"); + + //Act + TempFileCreator.CreateTempFile(tempFile); + var tempFileContent = File.ReadAllText(tempFile); + + tempDirectory.Delete(recursive: true); + + //Assert + Assert.Equal("Hello from CodeMaze!", tempFileContent); + Assert.False(Directory.Exists(tempDirectory.FullName)); + } + + [Fact] + public void GivenDeleteOnClose_WhenStreamIsDisposed_TheFileIsGone() + { + //Arrange + var tempFile = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); + var options = new FileStreamOptions + { + Mode = FileMode.CreateNew, + Access = FileAccess.ReadWrite, + Options = FileOptions.DeleteOnClose + }; + + //Act + bool existedWhileOpen; + using (var stream = new FileStream(tempFile, options)) + { + stream.Write("Hello from CodeMaze!"u8); + existedWhileOpen = File.Exists(tempFile); + } + + //Assert + Assert.True(existedWhileOpen); + Assert.False(File.Exists(tempFile)); + } +} diff --git a/files-csharp/WriteFileToTempFolder/WriteFileToTempFolder.Test/WriteFileToTempFolder.Test.csproj b/files-csharp/WriteFileToTempFolder/WriteFileToTempFolder.Test/WriteFileToTempFolder.Test.csproj index dd96cb9534..20c8188be3 100644 --- a/files-csharp/WriteFileToTempFolder/WriteFileToTempFolder.Test/WriteFileToTempFolder.Test.csproj +++ b/files-csharp/WriteFileToTempFolder/WriteFileToTempFolder.Test/WriteFileToTempFolder.Test.csproj @@ -1,7 +1,7 @@ - net8.0 + net10.0 enable enable @@ -10,13 +10,13 @@ - - - + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/files-csharp/WriteFileToTempFolder/WriteFileToTempFolder/Program.cs b/files-csharp/WriteFileToTempFolder/WriteFileToTempFolder/Program.cs index 6ff6da3c76..7b7ab0757a 100644 --- a/files-csharp/WriteFileToTempFolder/WriteFileToTempFolder/Program.cs +++ b/files-csharp/WriteFileToTempFolder/WriteFileToTempFolder/Program.cs @@ -1,6 +1,6 @@ using WriteFileToTempFolder; -var tempFile = Path.Combine(Path.GetTempPath(),"text.txt"); +var tempFile = Path.Combine(Path.GetTempPath(), "text.txt"); Console.WriteLine($"Creating temp file: '{tempFile}'"); TempFileCreator.CreateTempFile(tempFile); @@ -22,7 +22,7 @@ Console.WriteLine(); -var appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); +var appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); tempFile = Path.Combine(appDataPath, "text.txt"); Console.WriteLine($"Creating temp file: '{tempFile}'"); TempFileCreator.CreateTempFile(tempFile); @@ -30,4 +30,32 @@ Console.WriteLine($"Reading temp file contents: '{tempFile}'"); tempFileContent = File.ReadAllText(tempFile); Console.WriteLine(tempFileContent); -File.Delete(tempFile); \ No newline at end of file +File.Delete(tempFile); + +Console.WriteLine(); + +var tempDirectory = Directory.CreateTempSubdirectory("codemaze-"); +tempFile = Path.Combine(tempDirectory.FullName, "text.txt"); +Console.WriteLine($"Creating temp file: '{tempFile}'"); +TempFileCreator.CreateTempFile(tempFile); + +Console.WriteLine(File.ReadAllText(tempFile)); +tempDirectory.Delete(recursive: true); + +Console.WriteLine(); + +tempFile = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); +var options = new FileStreamOptions +{ + Mode = FileMode.CreateNew, + Access = FileAccess.ReadWrite, + Options = FileOptions.DeleteOnClose +}; + +using (var stream = new FileStream(tempFile, options)) +{ + stream.Write("Hello from CodeMaze!"u8); + Console.WriteLine($"Temp file '{tempFile}' exists? {File.Exists(tempFile)}"); +} + +Console.WriteLine($"Temp file '{tempFile}' exists? {File.Exists(tempFile)}"); diff --git a/files-csharp/WriteFileToTempFolder/WriteFileToTempFolder/WriteFileToTempFolder.csproj b/files-csharp/WriteFileToTempFolder/WriteFileToTempFolder/WriteFileToTempFolder.csproj index 2150e3797b..ed9781c223 100644 --- a/files-csharp/WriteFileToTempFolder/WriteFileToTempFolder/WriteFileToTempFolder.csproj +++ b/files-csharp/WriteFileToTempFolder/WriteFileToTempFolder/WriteFileToTempFolder.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable