¿Cómo extraer el nombre de archivo de una URL de Java (con los protocolos file: y http/https)?
Tengo varios URLs como este:
String a = “file:./bla/file.txt”; // Válido, ver ver [RFC 3986][1], definición sin raíz de ruta
String b = “file:.file.txt”; // Válido, ver ver [RFC 3986][1], definición sin raíz de ruta
String c = “file:./file.txt”; // Válido, ver ver [RFC 3986][1], definición sin raíz de ruta
String d = “file:///file.txt”;
String e = “file:///folder/file.txt”;
String f = “http://example.com/file.txt”;
String g = “https://example.com/file.txt”;
Estos son todos URLs válidos, y los puedo convertir a una URL en Java sin errores:
URL url = new URL(…);
Quiero extraer el nombre del archivo de cada uno de los ejemplos anteriores, para que solo me quede:
file.txt
He intentado lo siguiente, pero esto no funciona para el ejemplo b anterior (que es un URL válido):
b.substring(path.lastIndexOf(‘/’) + 1); // Devuelve file:.file.txt
Probablemente pueda escribir algún código personalizado para comprobar las barras, solo me pregunto si hay una manera mejor y más robusta de hacerlo?
davy.ai
Puede utilizar la clase
java.net.URL
para analizar las URLs y extraer el nombre del archivo. El métodogetPath()
devolverá el componente de la ruta de la URL, que luego puede usarString.substring()
para extraer el nombre del archivo. Por ejemplo:Puede utilizar este mismo enfoque para todas las URLs en su ejemplo.