Java - Padamkan Fail

Artikel ringkas ini menggambarkan cara menghapus Fail di Java - pertama menggunakan JDK 6, kemudian JDK 7 dan akhirnya perpustakaan Apache Commons IO.

Artikel ini adalah sebahagian daripada siri "Java - Back to Basic" di Baeldung.

1. Dengan Java - JDK 6

Mari mulakan dengan penyelesaian Java 6 standard:

@Test public void givenUsingJDK6_whenDeletingAFile_thenCorrect() throws IOException { new File("src/test/resources/fileToDelete_jdk6.txt").createNewFile(); File fileToDelete = new File("src/test/resources/fileToDelete_jdk6.txt"); boolean success = fileToDelete.delete(); assertTrue(success); }

Seperti yang anda lihat - fail mesti ada sebelum operasi hapus ; jika tidak, API tidak akan membuang pengecualian tetapi sebaliknya akan menjadi palsu.

2. Dengan Java - JDK 7

Mari beralih ke penyelesaian JDK 7:

@Test public void givenUsingJDK7nio2_whenDeletingAFile_thenCorrect() throws IOException { Files.createFile(Paths.get("src/test/resources/fileToDelete_jdk7.txt")); Path fileToDeletePath = Paths.get("src/test/resources/fileToDelete_jdk7.txt"); Files.delete(fileToDeletePath); }

Sekarang - ini akan menggunakan pengecualian dengan lebih baik. Sekiranya fail tidak wujud ketika operasi hapus dipicu - NoSuchFileException akan dilemparkan oleh API:

java.nio.file.NoSuchFileException: srctestresourcesfileToDelete_jdk7.txt at s.n.f.WindowsException.translateToIOException(WindowsException.java:79)

3. Dengan Commons IO

Commons IO membolehkan kita mengawal tingkah laku pengecualian semasa menghapus Fail. Untuk penghapusan senyap yang menelan kemungkinan pengecualian:

@Test public void givenUsingCommonsIo_whenDeletingAFileV1_thenCorrect() throws IOException { FileUtils.touch(new File("src/test/resources/fileToDelete_commonsIo.txt")); File fileToDelete = FileUtils.getFile("src/test/resources/fileToDelete_commonsIo.txt"); boolean success = FileUtils.deleteQuietly(fileToDelete); assertTrue(success); }

Perhatikan bahawa kita masih dapat menentukan sama ada operasi itu berjaya atau tidak dengan hanya memeriksa nilai pengembalian kaedah hapus.

Sekarang - jika kita mahu pengecualian dilemparkan:

@Test public void givenUsingCommonsIo_whenDeletingAFileV2_thenCorrect() throws IOException { FileUtils.touch(new File("src/test/resources/fileToDelete.txt")); FileUtils.forceDelete(FileUtils.getFile("src/test/resources/fileToDelete.txt")); }

Sekiranya fail yang akan dihapus tidak ada di sistem fail, API akan membuang FileNotFoundException standard :

java.io.FileNotFoundException: File does not exist: srctestresourcesfileToDelete.txt at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:2275)

Dan di sana anda memilikinya - 4 cara mudah untuk menghapus Fail di Java.