es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puede utilizar la clase java.net.URL para analizar las URLs y extraer el nombre del archivo. El método getPath() devolverá el componente de la ruta de la URL, que luego puede usar String.substring() para extraer el nombre del archivo. Por ejemplo:

    URL url = new URL(a);
    String filename = url.getPath().substring(url.getPath().lastIndexOf('/') + 1); // file.txt
    

    Puede utilizar este mismo enfoque para todas las URLs en su ejemplo.

Comments are closed.