File.Create() のトラブルシューティング: ファイル アクセス エラーの解決
ランタイム ファイルの作成では、アクセスの問題が頻繁に発生します。 よくあるエラーは、File.Create()
.
問題
このシナリオには、ファイルの存在を確認し、必要に応じてファイルを作成することが含まれます。 その後ファイルに書き込もうとすると、「ファイルは使用中です」エラーが発生します。 これは通常、次のようなコードで発生します:
<code class="language-csharp">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 }</code>
解決策
File.Create()
はファイル ポインターを開くだけです。自動的に閉じられるわけではありません。 この解決策では、Close()
を使用してファイルを作成した直後に明示的にファイルを閉じる必要があります。 さらに、この特定のケースでは、File.WriteAllText()
を使用する方が File.AppendText()
よりも簡単なアプローチです。
修正されたコード:
<code class="language-csharp">File.Create(filePath).Close(); File.WriteAllText(filePath, FileText); // Assuming FileText variable holds the text to write</code>
重要な考慮事項
このソリューションはファイル アクセスの問題を解決しますが、File.WriteAllText()
はシングルパスの性質のため、大きなテキスト ファイルには最適ではありません。 大きなファイルの場合は、パフォーマンスを向上させるために StreamWriter
を使用してデータをストリーミングするなど、より効率的な方法を検討してください。
以上がFile.Create() によって「ファイルが使用中」エラーが発生するのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。