2016-07-01 1 views
0

J'ai un serveur de fichiers statique sur "localhost: 8888/fileserver". J'essaye d'écrire un programme en Java pour télécharger les fichiers du serveur. Le serveur de fichiers se compose de trois dossiers, donc j'essaye d'écrire un script qui passe automatiquement par le répertoire et le copie sur mon ordinateur.Comment télécharger un répertoire de fichiers en ligne (localhost) en utilisant Java

Je sais qu'il existe une fonction wget pour linux qui accomplit ceci récursivement. Y a-t-il un moyen de le faire en Java? S'il vous plaît pourriez-vous conseiller sur la façon dont je devrais aller faire cela ou procéder.

Merci

Répondre

0

Voici un code pour passer par un répertoire en ligne et retourner tous les liens nécessaires pour télécharger. Après cela, j'ai juste besoin de télécharger chaque lien individuel.

import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

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

public class WebCrawler { 
    //Created a global list variable to save the links 
    static List<String> createList = new ArrayList<String>(); 

    public static void main(String[] args) throws IOException { 

     String url = "http://localhost:8888"; 
     System.out.println(myCrawler(url)+"\n"+"Size: "+myCrawler(url).size()); 

    }  

    public static List<String> myCrawler(String url) throws IOException{ 
     //Creates an open connection to a link 
     Document doc = Jsoup.connect(url).ignoreContentType(true).get(); 
     Elements links = doc.select("a[href]"); 

     //Recursively iterates through all the links provided on the initial url 
     for (Element i : links) { 
      String link = print("%s", i.attr("abs:href")); 
      if (link.endsWith("/")){myCrawler(link);} //Recursive part, calls back on itself 
      else {createList.add(link);} 
     } 
     return createList; 
    } 

    //Translates the link into a readable string object 
    private static String print(String msg, Object... args){return String.format(msg, args);} 
}