2012-03-15 6 views
5

में एक TXT फ़ाइल को कैसे पढ़ा जाए, मैं एक ऐप बनाना चाहता हूं जिसके लिए मेरी प्रोजेक्ट निर्देशिका पर .txt फ़ाइल को पढ़ने की आवश्यकता है।जावा सर्वर पेज निर्देशिका

<%@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 नहीं पाया जा सकता है:

यह मेरा index.jsp की मेरी कोड है। फिर, मैंने उसी निर्देशिका में aFile.txt डाल दिया है क्योंकि यह वेब पेज चलता है (index.jsp)। मुझे आश्चर्य है, aFile.txt

की निर्देशिका का पता लगाने के लिए मुझे क्या लिखना चाहिए और इस तरह मेरी समस्या हल हो गई। धन्यवाद अहमद 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

जहां jsp फ़ाइल और पाठ file.are डाल वेब inf में दोनों folder.please वेब inf से txt फ़ाइल को हटाने आप वेब से txt फ़ाइल का उपयोग करना चाहते हैं क्योंकि आप सर्वलेट की जरूरत है कर रहे हैं -inf।

टेक्स्ट फ़ाइल का पथ प्राप्त करने के लिए नीचे दिए गए कोड का उपयोग करें।

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

उपरोक्त कोड फ़ाइल ऑब्जेक्ट में पास करें।

+0

हां, मैंने इसे वेब-इंफ पर रखा है। अगर मैं इसे बाहरी वेब-इंफ पर डालूं तो क्या होगा? उदाहरण के लिए मैं एक फ़ोल्डर बना देता हूं और इसे वहां रखता हूं। – farissyariati

+0

टेक्स्ट फ़ाइल का पथ प्राप्त करने के लिए उपरोक्त कोड का उपयोग करें। –

5

प्राप्त करने के लिए चल रहे JSP की निर्देशिका, तो आपको निम्न कोड कॉल कर सकते हैं:

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

इस कोड को मानता है कि JSP अपने वेब अनुप्रयोग की जड़ पर रहता है। उसके बाद, आप 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 मुझे लगता है कि आप स्क्रिप्टलेट पर मेरी टिप्पणी के बारे में बात कर रहे हैं। [बलुससी] (http://stackoverflow.com/users/157882) इस पर एक पृष्ठ है: [जेएसपी फाइलों में जावा कोड से कैसे बचें?] (Http://balusc.blogspot.co.uk/2010/07/ कैसे करने के लिए से बचने-जावा-कोड-इन-jsp-files.html) – McDowell

0

जैसा कि मैंने अनुभव किया है यह आपके वेबसर्वर की मूल निर्देशिका से पढ़ेगा। असल में निर्देशिका से आपने वेबसर्वर शुरू किया। टॉमकैट में यह/home/माइक/टोमकैट होगा।स्वाभाविक रूप से, क्योंकि यह इस निर्देशिका से था, आपने अपनी जावा वर्चुअल मशीन शुरू की और जावा इसे इसकी मूल निर्देशिका मानेंगे।

संबंधित मुद्दे