Skip to content

Commit ac27914

Browse files
committed
Ensure directory exists before writing files.
1 parent 4a02b29 commit ac27914

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

src/WebJobs.Script/Extensions/FileUtility.cs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,24 @@ public static async Task WriteAsync(string path, string contents, Encoding encod
7676
}
7777

7878
encoding = encoding ?? Encoding.UTF8;
79-
using (Stream fileStream = OpenFile(path, FileMode.Create, FileAccess.Write, FileShare.Read))
80-
using (var writer = new StreamWriter(fileStream, encoding, 4096))
79+
80+
try
8181
{
82-
await writer.WriteAsync(contents);
82+
await TryWrite();
83+
}
84+
catch (DirectoryNotFoundException)
85+
{
86+
EnsureDirectoryExists(Path.GetDirectoryName(path));
87+
await TryWrite();
88+
}
89+
90+
async Task TryWrite()
91+
{
92+
using (Stream fileStream = OpenFile(path, FileMode.Create, FileAccess.Write, FileShare.Read))
93+
using (var writer = new StreamWriter(fileStream, encoding, 4096))
94+
{
95+
await writer.WriteAsync(contents);
96+
}
8397
}
8498
}
8599

0 commit comments

Comments
 (0)