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 |