Java - abrir archivo en servlet

 
Vista:

abrir archivo en servlet

Publicado por hugo (14 intervenciones) el 11/08/2007 14:37:39
Hola.

Hace unas semanas que estoy con este problema.
No se como abrir un archivo de texto en un servlet.(http://localhost:8080/servlet/lectura/archivo.txt)

Ayuda por favor.Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:abrir archivo en servlet

Publicado por Jose David (5 intervenciones) el 12/08/2007 22:30:13
Debes trabajar con la variable de contexto para obtener una ruta absoluta del lado del servidor con el metodo context.getRealPath(""), el context puedes obtenerlo del servlet config que se encuentra en el servlet con config.getServletContext(). Entonces deberias usar algo como
String url = context.getRealPath("servlet")+"/lectura/archivo.txt";
que te devolveria una ruta como <ruta_de_la_aplicacion_en_el_servidor>/servlet/lectura/archivo.txt

Devuleves esta ruta a través del Servlet y listo el browser automaticamente te abrira el archivo (Si existe). Tambien debes tener en cuenta que el slash puede variar dependiendo de la plataforma en donde se encuentre alojada la aplicación (puede ser / ó \) para esto entonces puedes en vez de colocar un slash determinado, colocar el resultado de la propiedad System.getProperty("file.separator") (o algo asi la verdad no lo recuerdo bien, investiga).
Espero que sea de tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:abrir archivo en servlet

Publicado por hugo (14 intervenciones) el 13/08/2007 00:40:43
Gracias por ayudarme. Pero igual no puedo abrir el archivo. Tengo poca idea con servlet y lo unico que necesito es abrir el archivo para pasarlo a una aplicacion de celular.
Yo lo intente hacer con el siguiente codigo(pero me muestra unicamente la primera linea del archivo)

mport java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class lectura extends HttpServlet
{
ServletContext context;

public void init(ServletConfig config) throws ServletException
{
super.init(config);
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
String archivo = request.getParameter("D:\\apache-tomcat-5.5.20\\webapps\\leeArchivo\\clientes.txt");
String linea;
FileReader fr = new FileReader (archivo);
BufferedReader br = new BufferedReader(fr);
while((linea=br.readLine())!=null)
{
//out.println("leyendo archivo");
out.println(linea);
}
}
}

Probe lo que me pasaste. Lo agregue al metodo init, y me dio el siguiente error:

Estado HTTP 500 -

escripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.

excepción

java.lang.NullPointerException
java.io.FileInputStream.<init>(FileInputStream.java:103)
java.io.FileInputStream.<init>(FileInputStream.java:66)
java.io.FileReader.<init>(FileReader.java:41)
lectura.doGet(lectura.java:22)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/5.5.20.

Como puedo arreglar este problema. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:abrir archivo en servlet

Publicado por angel (537 intervenciones) el 13/08/2007 11:22:34
Hola a lo mejor si retocas un poco tu codigo:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
String archivo = request.getParameter("D:\\apache-tomcat-5.5.20\\webapps\\leeArchivo\\clientes.txt");
String linea;
FileReader fr = new FileReader (archivo);
//Aqui vamos a guardar el contenido del fichero..
ByteArrayOutputStream bout = new ByteArrayOutputStream();

BufferedReader br = new BufferedReader(fr);
while((linea=br.readLine())!=null)
{
//out.println("leyendo archivo");
//out.println(linea);
/Guardamos el contenido del fichero linea a linea
bout.write(linea.getBytes());

}
//Escribimos el contenido del fichero almacenado en "bout" en la salida
bout.writeTo(out);
}

Suerte y saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:abrir archivo en servlet

Publicado por hugo (14 intervenciones) el 14/08/2007 03:22:40
Gracias por ayudarme.
Angel el codigo anterior me da el siguiente error:

Estado HTTP 500 -

type Informe de Excepci�n

mensaje

descripci�n El servidor encontr� un error interno () que hizo que no pudiera rellenar este requerimiento.

excepci�n

java.lang.NullPointerException
java.io.FileInputStream.<init>(Unknown Source)
java.io.FileInputStream.<init>(Unknown Source)
java.io.FileReader.<init>(Unknown Source)
lecturaClientes.doGet(lecturaClientes.java:22)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

nota La traza completa de la causa de este error se encuentra en los archivos de diario de Apache Tomcat/6.0.13.

Me das otra mano.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:abrir archivo en servlet

Publicado por angel (537 intervenciones) el 14/08/2007 07:56:39
No se donde t esta fallando, pero t sta dando un NullPointerException, con lo cual seguro que tienes un valor nulo antes de un punto.
Revisa los valores de tus objetos, a ver si alguno de ellos tiene un valor null, ya sea el FileReader, el ByteArrayOutputStream,....

Suerte y saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:abrir archivo en servlet

Publicado por angel (537 intervenciones) el 14/08/2007 07:59:11
Te todas formas, asi es como yo "descargo" un archivo pdf, por si te sirve de algo:

java.io.OutputStream os = response.getOutputStream();
//Tengo la informacion del pdf guardada en la sesion.
java.io.ByteArrayOutputStream baos = (java.io.ByteArrayOutputStream) session.getAttribute("baos");
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename="archivo.pdf");
response.setContentLength(baos.size());
os.flush();
baos.writeTo(os);
os.flush();
os.close();

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar