如何使用JSP列出服务器目录的内容?

编写JSP文件时,如何在运行时获取此文件的当前目录
(能够迭代目录并列出其内容)?

由于某些安全问题,是否会限制某些文件I / O操作?

我更喜欢没有访问某些特定于实现的服务器变量/属性的解决方案。

编辑:
我不会问它是否像new File(".")一样简单,因为这只会给出服务器可执行文件的目录。

您应该知道Web应用程序中jsp的路径,以便将其传递给getRealPath()

 File jsp = request.getRealPath(pathToJspInWebapp); //eg. /WEB-INF/jsp/my.jsp File directory = jsp.getParentFile(); File[] list = directory.listFiles(); 
  <%@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.elementAt(a).toString() + "]
") ; //generate files as XML out.println(""); for (int a = 0; a < l_Files.size(); a++) { out.println("" + l_Files.elementAt(a).toString() + ""); } out.println(""); %>

“C:/ mydirectory /”替换为您的目录

从Java Servlet API的2.1版开始,使用:

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

一个正确/有效的例子:

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

我用过这个,

 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"); } });