Rumah > Java > javaTutorial > Mengapa `file.delete()` Gagal Walaupun Pemeriksaan Kebolehcapaian Fail?

Mengapa `file.delete()` Gagal Walaupun Pemeriksaan Kebolehcapaian Fail?

Mary-Kate Olsen
Lepaskan: 2024-11-04 07:59:02
asal
470 orang telah melayarinya

Why Does `file.delete()` Fail Despite File Accessibility Checks?

Menyelesaikan Kegagalan Pemadaman Walaupun Semakan Kebolehcapaian Fail

Dalam percubaan untuk memadam fail selepas menggunakan FileOutputStream untuk menulis kandungan, kaedah file.delete() mengembalikan palsu walaupun mengesahkan kewujudan dan kebolehcapaian fail melalui file.exists(), file.canRead(), file.canWrite(), dan file.canExecute(). Tingkah laku ini boleh dikaitkan dengan pepijat pelik dalam Java.

Kaedah writeContent() digunakan dengan betul untuk menulis kandungan pada fail dan menutup strim. Walau bagaimanapun, apabila cuba pemadaman fail, ia gagal kerana kegigihan rujukan kepada fail oleh Java Virtual Machine (JVM). Untuk menangani isu ini, System.gc() mesti digunakan sebelum cuba pemadaman. Ini memaksa JVM untuk melakukan pengumpulan sampah, melepaskan rujukan kepada fail dan mendayakan pemadamannya.

Kod yang disemak dengan System.gc() ditambah termasuk:

finally
{
    try
    {
        in.close();
        in = null;
        out.flush();
        out.close();
        out = null;
        System.gc();
    }
    catch (IOException e)
    {
        logger.error(e.getMessage());
        e.printStackTrace();
    }
}
Salin selepas log masuk

Dengan menggunakan Sistem .gc() dalam blok akhirnya, rujukan kepada fail dialih keluar, membenarkan file.delete() berjaya memadamkan fail.

Atas ialah kandungan terperinci Mengapa `file.delete()` Gagal Walaupun Pemeriksaan Kebolehcapaian Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan