1. ホーム
  2. c#

[解決済み] File.Create()を使用した後、別のプロセスでファイルが使用される。

2022-07-01 20:05:04

質問

実行時にファイルが存在するかどうかを検出し、存在しない場合はファイルを作成しようとしています。しかし、私はそれに書き込もうとすると、このエラーが発生します。

このプロセスは、ファイル 'myfile.ext' が別のプロセスによって使用されているため、アクセスできません。

string filePath = string.Format(@"{0}\M{1}.dat", ConfigurationManager.AppSettings["DirectoryPath"], costCentre); 
if (!File.Exists(filePath)) 
{ 
    File.Create(filePath); 
} 

using (StreamWriter sw = File.AppendText(filePath)) 
{ 
    //write my text 
}

修正する方法について何かアイデアはありますか?

どのように解決するのですか?

この File.Create メソッドはファイルを作成し FileStream を開きます。 つまり、ファイルはすでに開かれているのです。 本当はfile.Createメソッドは全く必要ないのです。

string filePath = @"c:\somefilename.txt";
using (StreamWriter sw = new StreamWriter(filePath, true))
{
    //write to the file
}

の中のブーリアンは StreamWriter コンストラクタのブール値は、ファイルが存在すればその内容を追加するようにします。