Как прочитать файл TXT в каталоге страниц сервера Java - PullRequest
5 голосов
/ 15 марта 2012

Я хотел бы создать приложение, которое требует чтения файла .txt в каталоге моего проекта.

Это мой код моего 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>

Когда я выполняю вышеуказанный код, мой браузер сообщает, что aFile.txt не может быть найденоЗатем я поместил aFile.txt в тот же каталог, в котором работает эта веб-страница (index.jsp).Интересно, что мне написать, чтобы найти каталог aFile.txt

И вот как моя проблема была решена.Спасибо Ахмад Хасем

<%@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>

Ответы [ 5 ]

5 голосов
/ 15 марта 2012

Чтобы получить каталог работающей JSP, вы можете вызвать следующий код:

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

Этот код предполагает, что JSP находится в корне вашего веб-приложения.Затем вы можете добавить имя файла TXT к jspPath

String txtFilePath = jspPath + java.util.File.separator + "aFile.txt";
2 голосов
/ 15 марта 2012

где файл jsp и текстовый файл. Вы помещаете оба файла в папку web-inf. Пожалуйста, удалите файл txt из web-inf, потому что вам нужен сервлет, если вы хотите получить доступ к файлу txt из web-inf.

используйте следующий код для получения пути к текстовому файлу.

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

передать указанный выше код в файл объекта.

0 голосов
/ 10 сентября 2014

Как я понял, он будет читать из корневого каталога вашего веб-сервера.На самом деле из каталога вы запустили веб-сервер.В Tomcat это будет / home / mike / tomcat.Естественно, поскольку именно из этого каталога вы запустили виртуальную машину Java, и Java будет считать ее корневым каталогом.

0 голосов
/ 15 марта 2012

Не следует предполагать, что файл можно прочитать с помощью файловой системы.Это подробности развертывания и реализации относительно того, является ли файл WAR "взорванным" или нет.

Предполагая, что aFile.txt находится в корне вашего приложения, вы сможете открыть поток использование контекста сервлета :

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

Есть также более подходящие способы встраивания других файлов в JSP.

JSP включает стандартное действие :

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

Тег импорта JSTL :

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

Я предполагаю, что этот код написан для образовательных целей.Ни одно современное приложение не должно включать <% %> скриптлетов.

0 голосов
/ 15 марта 2012

Попробуйте найти его из корневого пути приложения.

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

...