Cara Mendapatkan Ekstensi File dari File di Java

1. Ikhtisar

Dalam tutorial singkat ini, kami akan menunjukkan cara mendapatkan ekstensi file secara terprogram di Java. Kami akan fokus pada tiga pendekatan utama untuk masalah tersebut.

Dalam implementasi kami, karakter setelah akhir ' .' akan dikembalikan.

Oleh karena itu, sebagai contoh cepat, jika nama file kita adalah jarvis.txt maka ia akan mengembalikan Stringtxt” sebagai ekstensi file.

2. Mendapatkan Ekstensi File

Untuk setiap pendekatan, kita akan belajar bagaimana menerapkannya dan menindaklanjuti apa yang terjadi dalam dua kasus khusus:

  • ketika nama file tidak memiliki ekstensi, seperti file makefile
  • dan jika nama file hanya terdiri dari ekstensi, seperti .gitignore atau .DS_Store.

2.1. Pendekatan Penanganan String Sederhana

Dengan pendekatan ini, kami akan menggunakan pendekatan penanganan String sederhana untuk menemukan ekstensi:

public Optional getExtensionByStringHandling(String filename) { return Optional.ofNullable(filename) .filter(f -> f.contains(".")) .map(f -> f.substring(filename.lastIndexOf(".") + 1)); } 

Metode ini akan memeriksa titik '.' kejadian di nama file yang diberikan.

Jika ada, maka ia akan menemukan posisi terakhir dari titik '.' dan mengembalikan karakter setelah itu, karakter setelah titik terakhir '.' dikenal sebagai ekstensi file.

Kasus Khusus:

  1. Tanpa ekstensi - metode ini akan mengembalikan String kosong
  2. Hanya ekstensi - metode ini akan mengembalikan String setelah titik, misalnya "gitignore"

2.2. FilenameUtils.getExtension dari Apache Commons IO

Dalam pendekatan kedua, kita akan menemukan ekstensi menggunakan kelas utilitas yang disediakan oleh pustaka Apache Commons IO:

public String getExtensionByApacheCommonLib(String filename) { return FilenameUtils.getExtension(filename); }

Di sini, selain nama file, kita juga bisa menentukan path lengkap ke file misalnya " C: /baeldung/com/demo.java ".

Metode getExtension (String) akan memeriksa apakah nama file yang diberikan kosong atau tidak.

Jika nama file kosong atau null, getExtension (String nama file) akan mengembalikan contoh yang diberikan. Jika tidak, ia mengembalikan ekstensi nama file.

Untuk melakukan ini, ia menggunakan metode indexOfExtension (String) yang, pada gilirannya, menggunakan lastIndexof (char) untuk menemukan kemunculan terakhir dari '.'. Kedua metode ini disediakan oleh FilenameUtils .

Metode ini juga memeriksa bahwa tidak ada pemisah direktori setelah titik terakhir dengan menggunakan metode lain indexOfLastSeparator (String), yang akan menangani file dalam format Unix atau Windows.

Kasus Khusus:

  1. Tanpa ekstensi - metode ini akan mengembalikan string kosong.
  2. Hanya ekstensi - metode ini akan mengembalikan String setelah titik, misalnya "gitignore"

2.3. Menggunakan Perpustakaan Jambu Biji

Dalam pendekatan terakhir ini, kami akan menggunakan library Guava untuk menemukan ekstensi.

Untuk menambahkan perpustakaan Guava, kita dapat menambahkan ketergantungan berikut ke pom.xml kita :

 com.google.guava guava 24.1.1-jre 

Untuk dependensi terbaru, kita bisa mengecek Maven Central.

Setelah menambahkan pustaka kita cukup menggunakan metode getFileExtension :

public String getExtensionByGuava(String filename) { return Files.getFileExtension(filename); } 

Metode getFileExtension (String) pertama-tama akan memeriksa apakah nama file yang diberikan kosong.

Jika nama file tidak kosong, maka itu akan membuat instance File dengan mengubah nama file yang diberikan menjadi nama jalur abstrak dan memanggil metode getName () File di atasnya, yang akan mengembalikan nama file yang dilambangkan dengan nama jalur abstrak ini, atau string kosong jika nama file yang diberikan kosong.

Berdasarkan nilai pengembalian ini, ia mengambil indeks kemunculan terakhir dari '.' dengan menggunakan metode kelas String inbuilt lastIndexOf (char) .

Kasus Khusus:

  1. Tanpa ekstensi - metode ini akan mengembalikan String kosong
  2. Hanya ekstensi - metode ini akan mengembalikan String setelah titik, misalnya "gitignore"

3. Kesimpulan

Saat memilih antara Apache Commons dan Guava , sementara kedua pustaka memiliki beberapa fitur umum dan mereka juga memiliki fungsionalitas yang tidak ada pada alternatifnya.

Ini berarti bahwa jika fungsionalitas tertentu diperlukan, pilih salah satu yang memilikinya. Jika tidak, jika diperlukan lebih banyak skenario khusus, pilih salah satu yang paling sesuai dengan kebutuhan Anda dan jangan ragu untuk membungkusnya dengan penerapan Anda sendiri untuk mendapatkan hasil yang diinginkan.

Juga, lihat semua contoh dalam artikel ini di Github.