Menyelesaikan Masalah Fail.Create(): Menyelesaikan Ralat Akses Fail
Penciptaan fail masa jalan sering menghadapi masalah akses. Ralat biasa ialah "Proses tidak boleh mengakses fail kerana ia digunakan oleh proses lain," walaupun selepas menggunakan File.Create()
.
Masalahnya
Senario ini melibatkan menyemak kewujudan fail dan menciptanya jika perlu. Percubaan seterusnya untuk menulis ke fail menghasilkan ralat "fail sedang digunakan". Ini biasanya berlaku dengan kod seperti ini:
<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>
Penyelesaian
File.Create()
hanya membuka penuding fail; ia tidak menutupnya secara automatik. Penyelesaiannya memerlukan penutupan fail secara eksplisit serta-merta selepas penciptaan menggunakan Close()
. Tambahan pula, menggunakan File.WriteAllText()
ialah pendekatan yang lebih mudah daripada File.AppendText()
untuk kes khusus ini.
Kod yang diperbetulkan:
<code class="language-csharp">File.Create(filePath).Close(); File.WriteAllText(filePath, FileText); // Assuming FileText variable holds the text to write</code>
Pertimbangan Penting
Walaupun penyelesaian ini menyelesaikan masalah akses fail, File.WriteAllText()
tidak optimum untuk fail teks besar kerana sifat laluan tunggalnya. Untuk fail besar, pertimbangkan kaedah yang lebih cekap seperti menstrim data menggunakan StreamWriter
untuk prestasi yang lebih baik.
Atas ialah kandungan terperinci Mengapa File.Create() Menyebabkan Ralat 'Fail Sedang Digunakan' dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!