コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】IOException: Sharing violation on path XXXX

エラー内容

IOException: Sharing violation on path XXXX
System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/FileStream.cs:320)
System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share)
(wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)

StreamReader を使用して、ファイルを読み込もうとした時に
上記のエラーが発生することがあります

これは、読み込もうとしたファイルが、
他のアプリで使用されている場合に発生します

対応方法

var sr = new StreamReader( path, Encoding.UTF8 );

例えば、このようなコードでファイルを読み込もうとしている場合は、

var fs = new FileStream( 
    path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite );
var sr = new StreamReader( fs, Encoding.UTF8 );

このように、FileStream のインスタンスを作成して使用することで
エラーを回避することができます