2012-03-15 14 views
5

プロジェクトディレクトリの.txtファイルを読む必要があるアプリケーションを作成したいと思います。Javaサーバーのページディレクトリで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をこのWebページが実行されているのと同じディレクトリに配置しました(index.jsp)。 ディレクトリを探すために何を書きますかaFile.txt

これは私の問題が解決された方法です。 Webからのtxtファイルにアクセスしたい場合は、サーブレットを必要としているので、あなたは、WEB-INFの両方を入れてJSPファイルとテキストfile.areは、WEB-INFからTXTファイルを削除folder.pleaseさのおかげアフマドの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> 

答えて

2

-inf。

テキストファイルのパスを取得するには、次のコードを使用します。

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

上記のコードをファイルオブジェクトに渡します。

+0

はい、私はweb-infに入れました。 web-infの外に置くとどうなりますか?例えば私はフォルダを作ってそこに置く。 – farissyariati

+0

上記のコードを使用してテキストファイルのパスを取得します。 –

5

実行しているJSPのディレクトリを取得するには、次のコードを呼び出すことができます。このコード

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

をJSPは、Webアプリケーションのルート上に存在することを前提としています。その後、あなたは、ファイルがファイルシステムを使用して読み取ることができることを仮定するべきではありませんjspPath

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

ように。しかし、私はgetServletConfigを見つけることができません、あなたは私を助けることができますか? – farissyariati

+0

ありがとうございます。これは私の問題を解決しました。 :) – farissyariati

0

にtxtファイル名を追加することができます。これは、WARファイルが "展開されている"かどうかの展開と実装の詳細です。

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

もJSPに他のファイルをインライン化するために、より適切な方法があります。

aFile.txtは、アプリケーションのルートにあると仮定すると、あなたはストリームusing the servlet contextを開くことができます。

JSPはstandard actionを含める:

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

JSTLインポートタグ:

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

私は、このコードは、教育目的のために書かれていると仮定しています。現代のアプリケーションには<% %>スクリプトレットを含めるべきではありません。

+0

あなたの最後の声明について、どうやってそれらをやるべきでしょうか?参考にしてください。前もってありがとうございます –

+0

@BtcSources私はあなたがスクリプトレットに関する私のコメントについて話していると思います。 [BalusC](http://stackoverflow.com/users/157882)には次のようなページがあります:[JSPファイルでJavaコードを避ける方法](http://balusc.blogspot.co.uk/2010/07/ how-to-avoid-java-code-in-jsp-files.html) – McDowell

0

私の経験では、ウェブサーバーのルートディレクトリから読み取ることができます。実際にあなたがWebサーバーを起動したディレクトリから。 Tomcatでは/ home/mike/tomcatになります。当然、このディレクトリからあなたがあなたのJava仮想マシンを起動したので、javaはこれをそのルートディレクトリとみなします。

関連する問題