Rumah >pembangunan bahagian belakang >C++ >Mengapa File.Create() Menyebabkan Ralat 'Fail Sedang Digunakan' dan Bagaimana Saya Boleh Membetulkannya?

Mengapa File.Create() Menyebabkan Ralat 'Fail Sedang Digunakan' dan Bagaimana Saya Boleh Membetulkannya?

Linda Hamilton
Linda Hamiltonasal
2025-01-16 22:33:14183semak imbas

Why Does File.Create() Cause a

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn