2009-06-03 12 views
10

जब कोई जेएसपी फ़ाइल लिखते हैं, तो मैं वर्तमान निर्देशिका को इस फ़ाइल के रनटाइम
(निर्देशिका को पुन: सक्रिय करने और इसकी सामग्री सूचीबद्ध करने में सक्षम होने के लिए) कैसे प्राप्त कर सकता हूं?जेएसपी का उपयोग कर सर्वर निर्देशिका की सामग्री कैसे सूचीबद्ध करें?

कुछ सुरक्षा समस्याओं के कारण कुछ फ़ाइल I/O संचालन प्रतिबंधित हो जाएंगे?

मैं कुछ कार्यान्वयन-विशिष्ट सर्वर चर/गुणों तक पहुंच के बिना समाधान पसंद करूंगा।

संपादित करें:
क्योंकि यह सिर्फ सर्वर के निष्पादनयोग्य की सूची देना होगा मैं, अगर यह रूप में new File(".") के रूप में सरल थे पूछना नहीं होगा।

+0

JSP सिंटेक्स के उपयोग से जवाब के साथ इसी तरह के प्रश्न: http://stackoverflow.com/a/21254129/ 333296 – Nux

उत्तर

3

आप अपने वेब अनुप्रयोग के भीतर jsp की राह जानते तो आप एक सही/काम कर रहे उदाहरण getRealPath()

File jsp = request.getRealPath(pathToJspInWebapp); //eg. /WEB-INF/jsp/my.jsp 
File directory = jsp.getParentFile(); 
File[] list = directory.listFiles(); 
+1

ध्यान दें: WAR फ़ाइल विस्फोट नहीं होने पर यह असफल हो जाएगा! –

0

है कि पारित कर सकते हैं करना चाहिए:

File jsp = new File(request.getRealPath(request.getServletPath())); 
File dir = jsp.getParentFile(); 
File[] list = dir.listFiles(); 
+0

यह सर्वलेट 2.1 spec के रूप में 'सही' नहीं है! – ingyhere

2

के संस्करण 2.1 के रूप में जावा सर्वलेट API उपयोग:

File jsp = new File(request.getSession().getServletContext().getRealPath(request.getServletPath())); 
File dir = jsp.getParentFile(); 
File[] list = dir.listFiles(); 
6
 <%@page import="java.io.*" %> 
     <%@page import="java.util.*" %> 
     <%!  public void GetDirectory(String a_Path, Vector a_files, Vector a_folders) { 
       File l_Directory = new File(a_Path); 
       File[] l_files = l_Directory.listFiles(); 

       for (int c = 0; c < l_files.length; c++) { 
        if (l_files[c].isDirectory()) { 
         a_folders.add(l_files[c].getName()); 
        } else { 
         a_files.add(l_files[c].getName()); 
        } 
       } 


      } 
     %> 

     <% 
      Vector l_Files = new Vector(), l_Folders = new Vector(); 
      GetDirectory("C:/mydirectory/", l_Files, l_Folders); 

      //folders should be left out... 
      //for(int a = 0 ; a<l_Folders.size() ; a++) 
      //out.println("[<b>"+l_Folders.elementAt(a).toString() + "</b>]<br>") ; 

      //generate files as XML 
      out.println("<music>"); 

      for (int a = 0; a < l_Files.size(); a++) { 
       out.println("<file>" + l_Files.elementAt(a).toString() + "</file>"); 
      } 

      out.println("</music>"); 
     %> 

बदलें "C:/mydirectory /" अपने निर्देशिका के साथ

0

मैं इस एक का इस्तेमाल किया है,

File jspFile = new File(request.getRealPath(request.getServletPath())); 
     File dir = jspFile.getParentFile(); 
     String requestURL = request.getRequestURL().toString(); 
     String urlDir = requestURL.substring(0, requestURL.lastIndexOf('/')); 

     File[] files = dir.listFiles(new FilenameFilter() { 
      @Override 
      public boolean accept(File dir, String name) { 
       return name.endsWith(".ipa"); 
      } 
     }); 
संबंधित मुद्दे

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