2012-07-19 64 views
15

Digamos que tengo un URL: http://java.sun.com/j2se/1.5/pdf quiero obtener una lista de todos los archivos/directorios en el directorio pdf. Estoy usando Java 5. Puedo obtener la lista de directorios con este programa http://www.httrack.com/. pero con java no sé si es posible.¿Cómo obtener la lista de archivos/directorios de un directorio url en java?

¿Algún cuerpo sabe cómo obtenerlo en Java o cómo este programa hace el trabajo que java no puede?

+5

¿sabes qué tipo de solicitudes HTTP harías para obtenerlas? ¿Sabe si el servidor HTTP de destino incluso admite la lista de directorios? – wrschneider

+0

No tengo mucha información sobre el servidor y la solicitud HTTP, lo único que tengo es una URL como la mencionada anteriormente. – itro

Respuesta

19

hay algunas condiciones:

  1. El servidor debe tener habilitado el listado del directorio con el fin de que usted pueda ver el contenido de la misma.
  2. No hay forma de que yo sepa (sin API o verbo HTTP) para recuperar el listado, por lo que el listado se muestra generalmente como una página HTML normal
  3. Deberá analizar esta página HTML para encontrar el entradas.

El análisis se puede realizar fácilmente usando una lib como JSoup.

Por ejemplo, el uso de JSoup que puede recuperar los documentos en la url http://howto.unixdev.net/ como este:

import java.io.IOException; 

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 

public class Sample { 
    public static void main(String[] args) throws IOException { 
     Document doc = Jsoup.connect("http://howto.unixdev.net").get(); 
     for (Element file : doc.select("td.right td a")) { 
      System.out.println(file.attr("href")); 
     } 
    } 
} 

salida será:

beignets.html 
beignets.pdf 
bsd-pam-ldap.html 
ddns-updates.html 
Debian_on_HP_dv6z.html 
dextop-slackware.html 
dirlist.html 
downloads/ 
ldif/ 
Linux-SharePoint.html 
rhfc3-apt.html 
rhfc3-apt.tar.bz2 
SUNWdsee-Debian.html 
SUNWdtdte-b69.html 
SUNWdtdte-b69.tar.bz2 
tcshrc.html 
Test_LVM_Trim_Ext4.html 
Tru64-CS20-HOWTO.html 

cuanto a su URL muestra http://java.sun.com/j2se/1.5/pdf se trata de una página no encontrada, así que creo que no tienes suerte.

+0

Puedo obtener la lista de directorios con este programa http://www.httrack.com/. Creo que debe haber una manera de hacerlo con Java también – itro

4

Si el URL es para el protocolo file :, entonces puede convertirlo a java.io.File, luego use esos métodos para listar el directorio.

Si el URL es para el protocolo http: no existe el concepto de directorios de archivos y básicamente no puede hacer lo que cree que desea hacer. Tendrá que dar un paso atrás y observar el requisito de nivel superior que está tratando de cumplir.

Solicite a su servidor que implemente un servlet para recuperar una lista de archivos de la carpeta especificada por la solicitud que recibe. En su punto final del cliente, su aplicación envía una solicitud al servidor proporcionando una ruta (¿virtual? Relativa?) Que desea listar. El servlet devolverá la lista de archivos en la ruta solicitada, recuperada del sistema operativo del servidor. Luego, serializa la lista de archivos en el punto final del cliente para su posterior procesamiento.

Si se puede mostrar la página con el acceso HTTP sólo entonces:
Utilice la página HTML y analizarlo dando el listado de directorios para obtener la lista de los archivos y saber-a-saber, utilizando expresiones regulares para hacer que los nombres de archivo.

Cuestiones relacionadas