58 votes

Vérifier si le fichier existe sur le serveur distant en utilisant son URL

Comment puis-je vérifier en Java si un fichier existe sur un serveur distant (servi par HTTP), en ayant son URL ? Je ne veux pas télécharger le fichier, juste vérifier son existence.

95voto

Adam Points 14766
import java.net.*;
import java.io.*;

public static boolean exists(String URLName){
    try {
      HttpURLConnection.setFollowRedirects(false);
      // note : you may also need
      //        HttpURLConnection.setInstanceFollowRedirects(false)
      HttpURLConnection con =
         (HttpURLConnection) new URL(URLName).openConnection();
      con.setRequestMethod("HEAD");
      return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
    }
    catch (Exception e) {
       e.printStackTrace();
       return false;
    }
  }

Si la connexion à une URL ( réalisé avec HttpURLConnection ) revient avec Code d'état HTTP 200 alors le fichier existe.

EDIT : Notez que puisque nous ne nous intéressons qu'à son existence, il n'est pas nécessaire de demander le document entier. Nous pouvons simplement demander l'en-tête en utilisant la méthode HTTP Méthode de requête HEAD pour vérifier s'il existe.

Source : http://www.rgagnon.com/javadetails/java-0059.html

15voto

Jigar Joshi Points 116533
public static boolean exists(String URLName){
    try {
      HttpURLConnection.setFollowRedirects(false);
      // note : you may also need
      //        HttpURLConnection.setInstanceFollowRedirects(false)
      HttpURLConnection con =
         (HttpURLConnection) new URL(URLName).openConnection();
      con.setRequestMethod("HEAD");
      return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
    }
    catch (Exception e) {
       e.printStackTrace();
       return false;
    }
  }  

vérifier si une url existe ou non

4voto

fd. Points 6835

En supposant que le fichier est servi par http, vous pouvez envoyer une requête HEAD à l'URL et vérifier le code de réponse http renvoyé.

3voto

Le seul vrai moyen est de le télécharger :). Sur certains serveurs, vous pouvez généralement vous en sortir en envoyant une requête HEAD au lieu d'une requête GET pour la même url. Cela vous renverra uniquement les métadonnées de la ressource et non le contenu réel du fichier.

Mise à jour : consultez la réponse de org.life.java pour obtenir les détails techniques sur la façon de procéder.

0voto

rfeak Points 5488

Établissez une connexion URLConnection avec lui. Si vous y parvenez, il existe. Vous devrez peut-être aller jusqu'à lui ouvrir un flux d'entrée, mais vous n'aurez pas à en lire le contenu. Vous pouvez immédiatement fermer le flux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X