diff --git a/src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.cs b/src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.cs index 417da0b825fd03..cc8d30ca73ef19 100644 --- a/src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.cs +++ b/src/libraries/System.IO.MemoryMappedFiles/src/System/IO/MemoryMappedFiles/MemoryMappedFile.cs @@ -148,7 +148,12 @@ public static MemoryMappedFile CreateFromFile(string path, FileMode mode, string throw new ArgumentException(SR.Argument_NewMMFWriteAccessNotAllowed, nameof(access)); } - bool existed = File.Exists(path); + bool existed = mode switch + { + FileMode.Open => true, // FileStream ctor will throw if the file doesn't exist + FileMode.CreateNew => false, + _ => File.Exists(path) + }; FileStream fileStream = new FileStream(path, mode, GetFileAccess(access), FileShare.Read, 0x1000, FileOptions.None); if (capacity == 0 && fileStream.Length == 0)