C#などで使う、System.IO.FileStream. こいつのオプションの組み合わせでいつも頭を抱えていたのでメモ
FileMode vs FileAccess
o : Success x : ArgumentException IO : IOException
File doesn’t exist
FileMode \ FileAccess Read Write ReadWrite CreateNew x o o Create x o o Open IO IO IO OpenOrCreate o o o Truncate x IO IO Append x o x
File already exist
FileMode \ FileAccess Read Write ReadWrite CreateNew x IO IO Create x o o Open o o o OpenOrCreate o o o Truncate x o o Append x o o
If file is already opened by FileMode
Already opened by FileMode Needs to specify to open FileShare Read Read or Write Write Write or ReadWrite ReadWrite Read or Write or ReadWrite
If file is already opended by FileShare
Already opened by FileShare Needs to specify to open FileMode None Cannot open Read Read Write Write ReadWrite Read or Write or ReadWrite