Rumah >pembangunan bahagian belakang >C++ >Bolehkah penguncian fail diperiksa di C# tanpa menggunakan pengecualian?
Pemeriksaan penguncian fail deterministik di C#
C# pemaju sering menemui ralat "fail yang digunakan oleh proses lain" ketika cuba mengakses fail sebelum disimpan. Walaupun pengendalian pengecualian adalah amalan standard, pendekatan yang lebih diramalkan adalah wajar untuk aplikasi tertentu.Ini boleh dicapai dengan menggunakan
dengan FileInfo.Open
dan FileAccess.Read
. Pembukaan fail yang berjaya (tanpa pengecualian) menunjukkan fail tersedia. Sebaliknya, FileShare.None
menandakan kunci. IOException
<code class="language-csharp">protected virtual bool IsFileLocked(FileInfo file) { // Attempt to open the file for reading with exclusive access try { using (FileStream stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None)) { // Successful opening; file is not locked return false; } } catch (IOException) { // File is locked return true; } }</code>Kaedah ini menawarkan pendekatan deterministik untuk pengesanan kunci fail, mengelakkan pergantungan pada pengecualian. Walau bagaimanapun, adalah penting untuk mengingati ini hanya berfungsi dengan pasti untuk fail
tidak dibuka dengan akses tulis. Cuba menggunakan dengan FileAccess.ReadWrite
akan sentiasa gagal, walaupun fail itu dibuka. FileShare.None
Atas ialah kandungan terperinci Bolehkah penguncian fail diperiksa di C# tanpa menggunakan pengecualian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!