Ce face File.extension
Pentru File("documente/raport.final.pdf"), extension este "pdf" (fără punct), iar nameWithoutExtension este "raport.final". Se uită doar la numele fișierului, nu la folderele din cale. Dacă numele nu are punct, extensia este textul gol.
Sunt proprietăți, deci se scriu fără paranteze. Nu verifică dacă fișierul există și nici ce conține: un fișier text redenumit poza.jpg are extensia jpg. Extensia păstrează literele mari, așa că pentru comparare folosește lowercase().
Ce returnează
Un String.
Exemple
Exemplul 1: Extensia și numele
La „arhiva.tar.gz” extensia este doar „gz”. Fișierul „Makefile” nu are extensie.
import java.io.File
fun main() {
for (cale in listOf("documente/raport.final.pdf", "arhiva.tar.gz", "Makefile", "POZA.JPG")) {
val f = File(cale)
println("${f.name}: extensie=\"${f.extension}\", nume=\"${f.nameWithoutExtension}\"")
}
}
Rezultat
raport.final.pdf: extensie="pdf", nume="raport.final"
arhiva.tar.gz: extensie="gz", nume="arhiva.tar"
Makefile: extensie="", nume="Makefile"
POZA.JPG: extensie="JPG", nume="POZA"
Exemplul 2: Schimbarea extensiei
Construim numele nou din nameWithoutExtension și redenumim fișierul.
import java.io.File
fun main() {
val f = File("notite.txt")
f.writeText("De citit: Ion Creangă")
val nou = File(f.nameWithoutExtension + ".md")
println("Redenumit: ${f.renameTo(nou)}")
println("${nou.name}: ${nou.readText()}")
}
Rezultat
Redenumit: true
notite.md: De citit: Ion Creangă
Exemplul 3: Gruparea fișierelor după tip
Extensia este transformată în litere mici, ca „JPG” și „jpg” să ajungă în același grup.
fun main() {
val nume = listOf("a.jpg", "b.JPG", "c.png", "d.pdf", "e.Pdf")
val grupuri = nume.map { java.io.File(it) }.groupBy({ it.extension.lowercase() }, { it.name })
println(grupuri)
}
Rezultat
{jpg=[a.jpg, b.JPG], png=[c.png], pdf=[d.pdf, e.Pdf]}
Greșeli frecvente
- Scrii
f.extension(). Este proprietate:f.extension. - Compari
f.extension == "jpg"și ratezi „POZA.JPG”. Foloseștef.extension.lowercase() == "jpg"sauequals(..., ignoreCase = true).
Comenzi înrudite
File.walk: Parcurge un director cu toate subdirectoarele și fișierele lui, ca o secvență de obiecte File.String.substringBefore: Returnează partea de text dinaintea sau de după un separator, fără să calculezi poziții.String.startsWith: startsWith verifică dacă textul începe cu un prefix, endsWith dacă se termină cu un sufix.