Java télécharger tous les fichiers et dossiers dans un répertoire
Je suis en train de télécharger tous les fichiers de ce répertoire. Cependant, je ne peux l'obtenir pour télécharger l'url d'un fichier. Que puis-je faire? J'ai essayé de chercher pour ce problème, et c'est source de confusion et les gens ont commencé à suggérer à l'aide de httpclients à la place. Merci pour votre aide, voici mon code jusqu'à présent. Il a été suggéré que j'utilise un flux d'entrée pour atteindre tous les fichiers dans le répertoire. Serait-ce alors aller dans un tableau? J'ai essayé le tutoriel ici http://docs.oracle.com/javase/tutorial/networking/urls/ mais ça ne m'aide pas à comprendre.
//ProgressBar/Install
String URL_LOCATION = "http://www.futureretrogaming.tk/gamefiles/ProfessorPhys/";
String LOCAL_FILE = filelocation.getText() + "\\ProfessorPhys\\";
try {
java.net.URL url = new URL(URL_LOCATION);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.addRequestProperty("User-Agent", "Mozilla/4.76");
//URLConnection connection = url.openConnection();
BufferedInputStream stream = new BufferedInputStream(connection.getInputStream());
int available = stream.available();
byte b[]= new byte[available];
stream.read(b);
File file = new File(LOCAL_FILE);
OutputStream out = new FileOutputStream(file);
out.write(b);
} catch (Exception e) {
System.err.println(e);
}
J'ai également trouvé ce code qui vous permettra de revenir une Liste de fichiers à télécharger. Quelqu'un peut-il m'aider à combiner les deux codes?
public class GetAllFilesInDirectory {
public static void main(String[] args) throws IOException {
File dir = new File("dir");
System.out.println("Getting all files in " + dir.getCanonicalPath() + " including those in subdirectories");
List<File> files = (List<File>) FileUtils.listFiles(dir, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);
for (File file : files) {
System.out.println("file: " + file.getCanonicalPath());
}
}
}
Eh bien, je peux maintenant, j'ai édité le fichier htaccess pour permettre cela.
Aussi, il serait préférable d'utiliser Apache HttpClient comme indiqué ici: Comment utiliser java.net.URLConnection à feu et à gérer les requêtes HTTP?
Alors, tout d'abord vous avez besoin pour lire et analyser le résultat de la première URL...
Merci pour le lien. Mais, je ne vois pas où il parle d'obtenir un tableau de tous les fichiers dont il a besoin pour le télécharger
OriginalL'auteur Kyle | 2013-06-14
Vous devez vous connecter pour publier un commentaire.
Vous devez télécharger la page, qui est la liste du répertoire, de l'analyser et de télécharger les inidiviudal fichiers liés dans la page...
Vous pourriez faire quelque chose comme...
Ou, vous pouvez télécharger Jsoup et de l'utiliser pour faire tout le travail dur...
Qui achera...
Vous serait alors nécessaire de construire une nouvelle URL pour chaque fichier et le lire comme vous l'avez déjà fait...
Par exemple, la
href
pourAssembly-CSharp-Edit..>
estAssembly-CSharp-Editor-firstpass-vs.csproj
, qui apparaît à un lien relatif, de sorte que vous devez faire précéder cette avechttp://www.futureretrogaming.tk/gamefiles/ProfessorPhys
de faire une nouvelleURL
dehttp://www.futureretrogaming.tk/gamefiles/ProfessorPhys/Assembly-CSharp-Editor-firstpass-vs.csproj
Vous aurez besoin de faire cela pour chaque élément que vous voulez prendre
Y avoir de l'amour aveugle vers le bas de votes. Il fallait avoir le courage de fournir de la rétroaction de sorte tang nous pouvons tous apprendre de nos erreurs et ont la possibilité d'améliorer la réponse
Désolé pour les aveugles downvote, je l'ai expliqué: Pour commencer, votre top code ne fonctionnerait pas pour quelque raison que ce soit. Je n'ai pas la peine de vérifier à travers tout, mais elle n'avait pas de travail. Deuxièmement, les JSoup ajout d'une dépendance - Qui, je pense personnellement qu'il est inutile et pénible. Et aussi, que vous attend cette sortie, mais n'a pas réalisé que le résultat est différent à l'aide de différents web affichage des applications (par exemple apache / ngix / etc). En fin de compte, j'ai télécharger "download.txt", réitéré par les chaînes dans ce fichier, et de le télécharger.Je viens de découvrir votre post unehpful est tout.
Aussi, il ne dit pas comment faire pour télécharger des sous-répertoires. Par exemple, si je veux télécharger le "/home" et il a le sous-répertoire "/home/swag", ce n'est pas téléchargé. Ce qui est important pour moi, surtout si je veux utiliser les autochtones.
Pourquoi ne serait-il pas le premier travail de la section? Il a été testé par rapport à la question d'origine?
OriginalL'auteur MadProgrammer
Avez-vous envisagé comme outil HTTrack, il peut détecter la présence de la balise d'ancrage sur le code HTML et télécharger l'intégralité du site web (limité par le niveau d'arborescence). Vous pouvez également spécifier le filtre quels fichiers doivent être téléchargés, etc
Si ce n'est pas en fonction de vos besoins, vous pouvez toujours utiliser la main écrit un programme en Java, à l'exception du problème est d'obtenir une liste de fichiers dans l'URL (et tous les sous-dossier à l'intérieur). Vous avez besoin de parser le HTML, de recueillir toutes les balises d'ancrage, et la traverser (qui est ce que HTTrack est en train de faire)
J'ai édité ma question pour inclure plus de code.
OriginalL'auteur gerrytan