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!