2011-01-24 2 views
2

Est-ce que quelqu'un connaît une méthode fiable pour voir si un fichier existe à une URL, en Java?Le fichier Java existe à l'adresse URL

Vous essayez de voir si le fichier existe avant qu'il ne soit téléchargé.

(HTTP, btw.)

+0

duplication possible de [vérifier une URL existe ou non] (http://stackoverflow.com/questions/4177864/checking-a-url-exist-or-not) –

Répondre

0

Il est impossible de le faire génériquement. Si vous savez que l'URL est une URL locale avec un protocole "file:", vous pouvez le convertir en un objet File normal et vérifier son existence de cette façon. Si le protocole est "http:", etc. vous ne pouvez pas vérifier l'existence sans essayer d'ouvrir un flux. Même dans ce cas, vous devez interpréter la réponse (en fonction du protocole) afin de savoir si quelque chose est là. Pour HTTP, vous obtiendrez probablement une réponse 404 si le fichier n'est pas trouvé, mais il pourrait s'agir d'un autre code de réponse. Cela dépend du service auquel vous accédez.

+0

Oui, j'ai essayé d'utiliser HttpURLConnection et il m'a donné 302 à chaque fois. –

+0

302 est une demande re-directe. Vous devez suivre le re-direct pour voir si le fichier existe. http://en.wikipedia.org/wiki/HTTP_302 –

+0

Je sais, s'il laissait suivre les redirections, il m'a donné 200, même si un fichier que je connais n'existe pas. –

1

URL url = new URL (some_url); 
URLConnection connection = url.openConnection(); 

connection.connect(); 

// Cast to a HttpURLConnection 
if (connection instanceof HttpURLConnection) 
{ 
    HttpURLConnection httpConnection = (HttpURLConnection) connection; 

    int code = httpConnection.getResponseCode(); 

    // do something with code ..... 
} 
else 
{ 
    System.err.println ("error - not a http request!"); 
} 

Usually HTTP error codes of 2xx represent success and 3xx for moved/redirection.

Si vous obtenez des erreurs '3xx', la réponse contient une ou plusieurs lignes d'en-tête de la forme URI: <url> String CrLf, utilisez ce nouveau processus url et répétez ci-dessus.

+0

Merci, cela a fonctionné après un peu de bricolage. –

+0

ne pas oublier de sélectionner la réponse qui vous a aidé le plus, en mettant un signe de graduation! – Ravikiran

Questions connexes