5 Stimmen

Wie man eine TXT-Datei im Java Server Page Directory liest

Ich würde gerne eine Anwendung erstellen, die das Lesen einer .txt Datei in meinem Projektverzeichnis.

Dies ist mein Code für mein 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>

Wenn ich den obigen Code ausführe, sagt mir mein Browser, dass aFile.txt nicht gefunden werden. Dann habe ich aFile.txt in demselben Verzeichnis, in dem diese Webseite läuft ( index.jsp ). Ich frage mich, was ich schreiben soll, um das Verzeichnis von aFile.txt

Und so wurde mein Problem gelöst. Danke 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>

6voto

Ahmed Hashem Punkte 360

Um das Verzeichnis des laufenden JSP zu erhalten, können Sie folgenden Code aufrufen:

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

Dieser Code geht davon aus, dass sich die JSP im Stammverzeichnis Ihrer Webanwendung befindet. Dann können Sie den Namen der txt-Datei an die jspPath

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

2voto

Rakesh Patel Punkte 383

Wo ist JSP-Datei und Text file.are Sie setzen beide in Web-inf folder.please entfernen txt-Datei von Web-inf, weil Sie Servlet benötigen, wenn Sie auf txt-Datei von Web-inf zugreifen möchten.

Verwenden Sie den folgenden Code, um den Pfad der Textdatei zu ermitteln.

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

übergeben Sie den obigen Code in file object.

0voto

Versuchen Sie, es im Stammverzeichnis der Anwendung zu finden.

http://www.java2s.com/Code/Java/JSP/ReadingBinaryData.htm

0voto

McDowell Punkte 105255

Sie sollten nicht davon ausgehen, dass die Datei über das Dateisystem gelesen werden kann. Es ist ein Detail der Bereitstellung und Implementierung, ob die WAR-Datei "explodiert" ist oder nicht.

Unter der Annahme, dass aFile.txt in der Wurzel Ihrer Anwendung befindet, sollten Sie den Stream öffnen können Verwendung des Servlet-Kontextes :

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

Es gibt auch geeignetere Möglichkeiten, andere Dateien in eine JSP einzubinden.

Die JSP enthalten Standardaktion :

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

のことです。 JSTL Tag importieren:

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

Ich gehe davon aus, dass dieser Code für Ausbildungszwecke geschrieben wird. Keine moderne Anwendung sollte enthalten <% %> Skriptlets.

0voto

mike Punkte 1

Wie ich erfahren habe, wird es aus dem Root-Verzeichnis Ihres Webservers gelesen. Genau genommen aus dem Verzeichnis, in dem Sie den Webserver gestartet haben. Bei Tomcat wird das /home/mike/tomcat sein. Da Sie Ihre virtuelle Java-Maschine von diesem Verzeichnis aus gestartet haben, betrachtet Java dieses Verzeichnis natürlich als sein Stammverzeichnis.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X