Kelas java.io.File
, walaupun digunakan secara meluas, mempunyai had yang menjadikannya kurang disyorkan daripada java.nio.file.Path
untuk memanipulasi fail dan direktori dalam Java, bermula dengan Java SE 7. Oracle menyerlahkan masalah seperti pengecualian generik, tingkah laku tidak konsisten antara pengendalian sistem, kekurangan sokongan pautan simbolik, isu prestasi dengan direktori yang besar dan traversal direktori yang tidak selamat.
Pakej java.nio.file
, dengan kelas Path
, menawarkan penyelesaian yang lebih mantap dan moden. Mari lihat perbandingan praktikal:
1. Pemadaman Fail:
java.io.File
: Memadam melalui file.delete()
mengembalikan hanya boolean, tanpa butiran tentang ralat.File file = new File("example.txt"); System.out.println("Arquivo excluído com sucesso: " + file.delete());
java.nio.file.Path
: Files.delete()
melontarkan pengecualian khusus, membenarkan pengendalian ralat yang lebih tepat (cth. NoSuchFileException
, AccessDeniedException
).Path path = Path.of("example.txt"); try { Files.delete(path); } catch (IOException e) { System.err.println("Erro ao excluir arquivo: " + e.getMessage()); }
2. Penamaan Semula Fail:
java.io.File
: oldFile.renameTo(newFile)
menunjukkan tingkah laku yang tidak konsisten antara sistem.File oldFile = new File("old_name.txt"); File newFile = new File("new_name.txt"); System.out.println("Renomeou com sucesso: " + oldFile.renameTo(newFile));
java.nio.file.Path
: Files.move(oldPath, newPath)
menawarkan pengendalian pengecualian (mis. FileAlreadyExistsException
).Path oldPath = Path.of("old_name.txt"); Path newPath = Path.of("new_name.txt"); try { Files.move(oldPath, newPath); System.out.println("Arquivo renomeado com sucesso."); } catch (IOException e) { System.err.println("Erro ao renomear arquivo: " + e.getMessage()); }
Migrasi Berperingkat:
Untuk projek sedia ada menggunakan java.io.File
, migrasi boleh dilakukan secara beransur-ansur menggunakan kaedah file.toPath()
untuk menukar File
kepada Path
.
File file = new File("example.txt"); Path path = file.toPath(); try { Files.delete(path); } catch (IOException e) { System.err.println("Erro ao excluir arquivo: " + e.getMessage()); }
Penggunaan java.nio.file.Path
memberikan kod yang lebih mantap, selamat dan mudah alih. Walaupun terdapat keluk pembelajaran, faedah jangka panjang melebihi kos penghijrahan.
Rujukan:
Atas ialah kandungan terperinci 'Dapat Ikan, Java!': Mengapa Tinggalkan java.io.File Di Belakang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!