java - saber - Compruebe si el archivo existe en el servidor remoto usando su URL
saber si existe un archivo c# (6)
Haga una URLConnection a él. Si tienes éxito, existe. Puede que tenga que abrir una secuencia de entrada, pero no tiene que leer el contenido. Puedes cerrar inmediatamente la transmisión.
Esta pregunta ya tiene una respuesta aquí:
- Comprobando si existe una URL o no 4 respuestas
¿Cómo puedo verificar en Java si existe un archivo en un servidor remoto (servido por HTTP) que tiene su URL? No quiero descargar el archivo, simplemente verifique su existencia.
La única forma verdadera es descargarlo :). En algunos servidores, por lo general, puede salirse emitiendo una solicitud HEAD en respuesta a una solicitud GET para la misma URL. Esto le devolverá solo los metadatos de recursos y no el contenido real del archivo.
Actualización: verifique la respuesta de org.life.java para conocer los detalles técnicos reales sobre cómo hacer esto.
Mira esto, funciona para mí. URL de origen: compruebe si existe URL o no en el servidor
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String customURL = "http://www.desicomments.com/dc3/08/273858/273858.jpg";
MyTask task = new MyTask();
task.execute(customURL);
}
private class MyTask extends AsyncTask<String, Void, Boolean> {
@Override
protected void onPreExecute() {
}
@Override
protected Boolean doInBackground(String... params) {
try {
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection con = (HttpURLConnection) new URL(params[0]).openConnection();
con.setRequestMethod("HEAD");
System.out.println(con.getResponseCode());
return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
}
catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
protected void onPostExecute(Boolean result) {
boolean bResponse = result;
if (bResponse==true)
{
Toast.makeText(MainActivity.this, "File exists!", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(MainActivity.this, "File does not exist!", Toast.LENGTH_SHORT).show();
}
}
}
}
Suponiendo que el archivo se sirve a través de http, puede enviar una solicitud HEAD a la URL y verificar el código de respuesta http devuelto.
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 conexión a una URL ( realizada con HttpURLConnection ) regresa con el código de estado HTTP 200, entonces el archivo existe.
EDITAR: Tenga en cuenta que, dado que solo nos importa si existe o no, no hay necesidad de solicitar el documento completo. Solo podemos solicitar el encabezado utilizando el método de solicitud HTTP HEAD para verificar si existe.
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;
}
}