Foros del Web » Programación para mayores de 30 ;) » Java »

Como verificar la existencia de un archivo en el URL

Estas en el tema de Como verificar la existencia de un archivo en el URL en el foro de Java en Foros del Web. Saludos.... Hola, estoy realizando una aplicacion web y tengo q cargar dinamicamente algunos archivos ubicados en el servidor web, sin embargo, nose con que funcion ...
  #1 (permalink)  
Antiguo 26/04/2006, 13:23
 
Fecha de Ingreso: abril-2004
Ubicación: Morelos, México
Mensajes: 124
Antigüedad: 20 años
Puntos: 0
Como verificar la existencia de un archivo en el URL

Saludos....
Hola, estoy realizando una aplicacion web y tengo q cargar dinamicamente algunos archivos ubicados en el servidor web, sin embargo, nose con que funcion implementar la verificacion de archivos.

He utilizado la clase File, pero solo trabaja con el sistema operativo (ej. c:/carpeta), no trabaja con URLs.

Si sabe como efectuar esta interpretacion se los agradecere

if (existeArchivo){
//Existe
}
else{
//No existe
}


ejemplo:URL: "http://11.1.1.1:8083/apliweb/cartepa/archivo.swf"

De antemano, muchas gracias.......
  #2 (permalink)  
Antiguo 26/04/2006, 14:31
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Hola:

La clase File tiene un constructor que admite una URI (creo que es similar a al URL) y File tiene métodos exists(), canRead(), etc.

Prueba a ver si te funciona (yo no lo he probado nunca).

Se bueno
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 26/04/2006, 14:39
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
Código:
  URL url = null;
            try {
                url = new URL("http://server/dir/loquesea.ext");
            } catch (MalformedURLException e) {
             // pues que no se alcanza loquesea.ext ???   
            }
  #4 (permalink)  
Antiguo 26/04/2006, 14:57
 
Fecha de Ingreso: abril-2004
Ubicación: Morelos, México
Mensajes: 124
Antigüedad: 20 años
Puntos: 0
Gracias amigos Chuidiang y dogduck.

Ya probe el codigo utilizando la clase URL y en todas las variantes posibles de la clase File, y no controla la URL.

No controla las excepciones o la existencia de determinado archivo en la URL
  #5 (permalink)  
Antiguo 26/04/2006, 15:25
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
lo amplio
Código:
boolean existe=false;
URL url = null;
            try {
                url = new URL("http://server/dir/loquesea.ext");
                existe=true;            } catch (MalformedURLException e) {
             // pues que no se alcanza loquesea.ext ???   
             existe=false;            }
  #6 (permalink)  
Antiguo 26/04/2006, 15:29
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
La clase File es solo para ficheros locales, lo que has de usar es la clase URL pero no basta con crear la URL, ya que ahí sólo te mira si la sintaxis es correcta, nada más. Para ver si el fichero existe hay que abrir la conexión e intentar conectarse a la URL, para ver cual es el resultado de la conexión (HostNotFound, 404...)

Un saludo
  #7 (permalink)  
Antiguo 26/04/2006, 15:33
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
... Gracias ...
  #8 (permalink)  
Antiguo 26/04/2006, 16:39
 
Fecha de Ingreso: abril-2004
Ubicación: Morelos, México
Mensajes: 124
Antigüedad: 20 años
Puntos: 0
Saludos.......

Ya probe varias veces con URL. Y con las instrucciones siguientes

Código PHP:
boolean existe=false;

URL url null;
            try {
                
url = new URL("http://server/dir/loquesea.ext");
                
existe=true;            } catch (MalformedURLException e) {
             
// pues que no se alcanza loquesea.ext ???   
             
existe=false
Sin embargo, aun no marca excepcion, exista o no el archivo o lo intente abrir o no, no identifica nada.
  #9 (permalink)  
Antiguo 26/04/2006, 17:29
 
Fecha de Ingreso: abril-2004
Ubicación: Morelos, México
Mensajes: 124
Antigüedad: 20 años
Puntos: 0
Aun me marca error, ya lo probe de la siguiente forma.
Ahora logre hace que marcara la clase URL el error, pero no porque el archivo exista o no, sino por otras cosas
Código PHP:
         try{
           
//Aqui no marca error a pesar de que esta mal el URL
              
URL direccion = new URL(RutaURL+"nada");

               
//Aqui marca error, si el texto de prueba lo pongo al inicio de la URL
              //pero si se lo omito y dejo la ultima, no marca error
              // A mi entender la clase URL verifica que este bien formada PROTOLOCO, IP, CARPETAS, ARCHIVO
              //pero no se asegura de que exista o no.
              //Esta es la conclusion a la que llegue.
              //RutaURL, es un direccion valida, ya que se muestra su informacion.

              
URL direccion2 = new URL("nada"+RutaURL+"nada");
              
URLConnection conex direccion.openConnection();
              
URLConnection conex2 direccion2.openConnection();
            }
          catch(
MalformedURLException errorURL){
//Aqui manda el error pero solo para el caso direccion2
            
System.err.println("La URL " RutaURL " es incorrecta");
            } 
  #10 (permalink)  
Antiguo 27/04/2006, 00:29
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Hay que hacer algo mas que openConnection, por que con eso realmente no abre la conexion sino que solo la "prepara". Hasta que no usas uno de los metodos de la conexion no se accede realmente al servidor.

Mirate estos ejemplo y el API de HttpURLConnection y veras más o menos por donde van los tiros:
http://www.kickjava.com/996.htm
http://javaalmanac.com/egs/java.net/pkg.html#HTTP

Saludos
http://www.kickjava.com/1299.htm
  #11 (permalink)  
Antiguo 27/04/2006, 06:39
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Hola:

El siguiente código funciona. Si el fichero existe sale "Abierto" y si no existe salta la excepción.

import java.net.*;
import java.io.*;

public class prueba
{
public static void main (String [] args)
{
try
{
URL url = new URL("http://172.30.210.35/index.html");
InputStream is = url.openStream();
System.out.println("Abierto");
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

Lo que pasa es que estás abriendo el fichero para leerlo, aunque no lo leas, que no sé si te vale.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #12 (permalink)  
Antiguo 27/04/2006, 06:50
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
chuidiang
  #13 (permalink)  
Antiguo 27/04/2006, 10:14
 
Fecha de Ingreso: abril-2004
Ubicación: Morelos, México
Mensajes: 124
Antigüedad: 20 años
Puntos: 0
Saludos chuidiang, ya probe las instrucciones que pusiste, pero ahora manda excepciones este o no existente dicho archivo.

En realidad ya me desespere, supongo que toda la ayuda que me mandaron, a ustedes si les funciona correctamente, no entiendo cual es la causa o el porque a mi no me funciona.

De ante mano les agradezco mucho por brindarme su ayuda, gracias amigos chuidiang, dogduck y GreenEyed.
  #14 (permalink)  
Antiguo 27/04/2006, 15:33
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Hola de nuevo:

Quizás el problema no esté en el código. ¿No habrá algún cortafuegos?.

Más cosas. Si pones "http://..." debe haber un serividor web al otro lado. ¿es así?.

Si no, puedes probar a poner "file://...". En ese caso, trata de acceder al fichero con el explorador normal de windows y verifica que no te pide ningun usuario/password para acceder.

En fin, pueden ser problemas de este estilo.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #15 (permalink)  
Antiguo 27/04/2006, 16:47
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Sin el mensaje de error para poder hacernos una idea del problema, la adivinación se hace difícil .
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:28.