2011-01-24 4 views
2

Кто-нибудь знает надежный метод для просмотра, существует ли файл в URL-адресе на Java?Файл Java существует по адресу

Пытается проверить, существует ли файл перед его загрузкой.

(HTTP, кстати.)

+0

Возможный дубликат [проверка URL существует или нет] (http://stackoverflow.com/questions/4177864/checking-a-url-exist-or-not) –

ответ

0

Это не возможно сделать это в общем. Если вы знаете, что URL-адрес - это локальный url с протоколом «file:», вы можете преобразовать его в обычный объект File и проверить его существование таким образом. Если протокол «http:» и т. Д., Вы не можете проверить наличие, не пытаясь открыть поток. Даже тогда вам нужно интерпретировать ответ (в зависимости от протокола), чтобы узнать, есть ли что-то. Для HTTP вы, вероятно, получите ответ 404, если файл не найден, но это может быть другой код ответа. Зависит от службы, к которой вы обращаетесь.

+0

Да, я пробовал использовать HttpURLConnection, и это дало мне 302 каждый раз. –

+0

302 - запрос на повторный вызов. Вы должны следить за перенаправлением, чтобы узнать, существует ли файл. http://en.wikipedia.org/wiki/HTTP_302 –

+0

Я знаю, если он позволяет ему следовать переадресации, он дал мне 200, хотя один файл, который я знаю, не существует. –

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.

Если вы получили ошибки «3xx», ответ содержит одну или несколько строк заголовка формы URI: <url> String CrLf, используйте этот новый url и повторите описанный выше процесс.

+0

Спасибо, это сработало после немного возиться. –

+0

не забудьте выбрать ответ, который вам больше всего понравился, поставив знак отметки! – Ravikiran

Смежные вопросы