2012-03-15 12 views
5

Me gustaría crear una aplicación que requiera leer un archivo .txt en el directorio de mi proyecto.Cómo leer un archivo TXT en el Directorio de la página del servidor Java

Este es mi código de mi index.jsp:

<%@page import="java.io.FileReader"%> 
<%@page import="java.io.BufferedReader"%> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Read Text</title> 
    </head> 
    <body> 
     <% 
      BufferedReader reader = new BufferedReader(new FileReader("aFile.txt")); 
      StringBuilder sb = new StringBuilder(); 
      String line; 

      while((line = reader.readLine())!= null){ 
       sb.append(line+"\n"); 
      } 
      out.println(sb.toString()); 
     %> 
    </body> 
</html> 

Cuando ejecuto el código anterior, mi navegador me dice que aFile.txt no se puede encontrar. Luego, puse aFile.txt en el mismo directorio que esta página web (index.jsp). Me pregunto, ¿qué debo escribir para encontrar el directorio de aFile.txt

Y así es como se resolvió mi problema. Gracias Ahmad Hasem

<%@page import="java.io.File"%> 
<%@page import="java.io.InputStreamReader"%> 
<%@page import="java.net.URL"%> 
<%@page import="java.io.FileReader"%> 
<%@page import="java.io.BufferedReader"%> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Read Text</title> 
    </head> 
    <body> 
     <% 
      String jspPath = session.getServletContext().getRealPath("/res"); 
      String txtFilePath = jspPath+ "/aFile.txt"; 
      BufferedReader reader = new BufferedReader(new FileReader(txtFilePath)); 
      StringBuilder sb = new StringBuilder(); 
      String line; 

      while((line = reader.readLine())!= null){ 
       sb.append(line+"\n"); 
      } 
      out.println(sb.toString()); 
     %> 
    </body> 
</html> 

Respuesta

2

dónde está el archivo JSP y texto file.are se pone tanto en WEB-INF folder.please eliminar el archivo txt desde web-inf porque usted es necesidad servlet si desea tener acceso a un archivo txt desde web -inf.

utilice el siguiente código para obtener la ruta del archivo de texto.

 this 
     .getServlet() 
     .getServletContext() 
     .getRealPath(FOLDER NAME) 
     .concat(System.getProperty("file.separator") 
     .concat(FILE NAME)); 

pase el código de arriba en el objeto de archivo.

+0

Sí, lo puse en web-inf. ¿Qué sucede si lo publico fuera de web-inf? por ejemplo, hago una carpeta y la coloco allí. – farissyariati

+0

utilice el código anterior para obtener la ruta del archivo de texto. –

5

para obtener el directorio de la JSP en ejecución, puede llamar al siguiente código:

String jspPath = session.getServletConfig().getServletContext().getRealPath("/"); 

Este código asume que la JSP reside en la raíz de la aplicación web. A continuación, puede añadir el nombre de archivo txt a la jspPath

String txtFilePath = jspPath + java.util.File.separator + "aFile.txt"; 
+0

tan cerca. Pero no puedo encontrar getServletConfig, ¿me pueden ayudar? – farissyariati

+0

Gracias. esto resolvió mi problema :) – farissyariati

0

Usted no debe asumir que el archivo se puede leer usando el sistema de archivos. Es un detalle de despliegue e implementación sobre si el archivo WAR está "explotado" o no.

Suponiendo que aFile.txt está en la raíz de su aplicación, debe ser capaz de abrir la corriente using the servlet context:

<% java.io.InputStream in = application.getResourceAsStream("/aFile.txt"); %> 

también hay formas más apropiadas para Inline otros archivos en un JSP.

El JSP incluye standard action:

<jsp:include page="aFile.txt" /> 

La etiqueta JSTL importación:

<%-- header --%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
.... 
<c:import url="/aFile.txt" /> 

Estoy asumiendo este código se escribe con fines educativos. Ninguna aplicación moderna debe incluir scriptlets <% %>.

+0

Acerca de su última declaración, ¿cómo deberían hacerse entonces? Cualquier referencia por favor? Gracias de antemano –

+0

@BtcSources Supongo que está hablando de mi comentario sobre scriptlets. [BalusC] (http://stackoverflow.com/users/157882) tiene una página sobre esto: [¿Cómo evitar el código de Java en los archivos JSP?] (Http://balusc.blogspot.co.uk/2010/07/ how-to-avoid-java-code-in-jsp-files.html) – McDowell

0

Como he experimentado, leerá desde el directorio raíz de su servidor web. En realidad, desde el directorio que inició el servidor web. En Tomcat será/home/mike/tomcat.Naturalmente, porque era desde este directorio que iniciaste tu máquina virtual Java y java considerará este como su directorio raíz.

Cuestiones relacionadas