Rumah  >  Artikel  >  Java  >  Mengapa file.delete() mengembalikan palsu walaupun semakan kebolehaksesan?

Mengapa file.delete() mengembalikan palsu walaupun semakan kebolehaksesan?

Linda Hamilton
Linda Hamiltonasal
2024-11-05 03:56:02596semak imbas

Why does file.delete() return false despite accessibility checks?

Pemadaman Fail Palsu: file.delete() Mengembalikan Palsu Walaupun Pemeriksaan Kebolehcapaian

Walaupun mengesahkan kewujudan fail dan kebolehaksesan dengan file.exists() , file.canRead(), file.canWrite(), dan file.canExecute(), cuba memadamkan fail menggunakan file.delete() secara berterusan mengembalikan palsu. Ini menimbulkan kebimbangan tentang kemungkinan ralat dalam proses pemadaman.

Menyiasat Isu

Untuk menulis kandungan pada fail, FileOutputStream digunakan, diikuti dengan membuang dan menutup strim . Selepas pemeriksaan, keempat-empat semakan kebolehaksesan membuahkan hasil yang positif. Walau bagaimanapun, file.delete() terus mengembalikan false.

Kemungkinan Ralat

Coretan kod yang diberikan tidak mempunyai langkah penting: menutup strim fail sebelum mencuba pemadaman. Peninggalan ini boleh menghalang sistem fail daripada mengemas kini metadatanya, menyebabkan fail.delete() gagal.

Penyelesaian

Untuk menyelesaikan isu, pastikan strim fail adalah ditutup dengan betul sebelum memanggil file.delete(). Kod di bawah melaksanakan pengubahsuaian yang diperlukan:

<code class="java">private void writeContent(File file, String fileContent) {
    FileOutputStream to;
    try {
        to = new FileOutputStream(file);
        to.write(fileContent.getBytes());
        to.flush();
        to.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        try {
            to.close();  // Close the file stream before deletion
        } catch (IOException e) {
            // Exception handling for closing the stream
        }
    }
}</code>

Dengan menutup strim fail secara eksplisit dalam blok akhirnya, metadata fail dikemas kini dengan betul, membolehkan pemadaman fail berjaya melalui file.delete().

Atas ialah kandungan terperinci Mengapa file.delete() mengembalikan palsu walaupun semakan kebolehaksesan?. 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