Java: Lire dans les fichiers texte d'un répertoire, à partir d'Internet


Quelqu'un sait-il lire récursivement des fichiers d'un répertoire spécifique sur Internet, en Java? Je veux lire dans tous les fichiers texte de ce répertoire Web: http://www.cs.ucdavis.edu / ~ davidson / cours / 170-S11/Femme /

Je sais comment lire dans plusieurs fichiers dans un dossier sur mon ordinateur, et je comment lire dans un fichier unique à partir d'internet. Mais comment puis-je lire dans plusieurs fichiers sur Internet, sans coder en dur les URL dans?

Trucs que j'ai essayés:

// List the files on my Desktop
final File folder = new File("/Users/crystal/Desktop");
File[] listOfFiles = folder.listFiles();

for (int i = 0; i < listOfFiles.length; i++) {
    File fileEntry = listOfFiles[i];
    if (!fileEntry.isDirectory()) {
        System.out.println(fileEntry.getName());
    }
}

Une autre chose que j'ai essayé:

// Reading data from the web 
try 
{
    // Create a URL object
    URL url = new URL("http://www.cs.ucdavis.edu/~davidson/courses/170-S11/Female/5_1_1.txt");

    // Read all of the text returned by the HTTP server
    BufferedReader in = new BufferedReader (new InputStreamReader(url.openStream()));

    String htmlText;      // String that holds current file line

    // Read through file one line at a time. Print line
    while ((htmlText = in.readLine()) != null) 
    {
        System.out.println(htmlText);
    }
    in.close();
} catch (MalformedURLException e) {
    e.printStackTrace();
} catch (IOException e) {
    // If another exception is generated, print a stack trace
    e.printStackTrace();
}

Merci!

Author: Crystal, 2011-05-29

1 answers

Puisque l'URL que vous avez mentionnée a des index activés, vous avez de la chance. Vous avez quelques options ici.

  1. Analysez le code HTML pour trouver l'attribut des balises a, en utilisant SAX2 ou tout autre analyseur XML. htmlunit fonctionnerait aussi je pense.
  2. Utilisez un peu de magie regexp pour faire correspondre toutes les chaînes entre <a href=" et "> et utilisez-les comme URL à lire.

Une fois que vous avez une liste de toutes les URL dont vous avez besoin, le deuxième morceau de code devrait fonctionner très bien. Juste une itération sur votre liste et construisez votre URL à partir de cette liste.

Voici un exemple d'expression régulière qui devrait correspondre à ce que vous voulez. Il attrape quelques liens supplémentaires, mais vous devriez pouvoir les filtrer.

<a\ href="(.+?)">
 0
Author: Varun Madiath, 2011-05-29 03:44:06