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


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

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

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

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


3715
2018-06-03 22:58


起源

使用JSP语法回答类似的问题: stackoverflow.com/a/21254129/333296 - Nux


答案:


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

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

4
2018-06-04 01:10



注意:当WAR文件未爆炸时,这将失败! - Michael-O
注意:从Servlet API的2.1版中不推荐使用.getRealPath() coderanch.com/t/365382/java/... - Chrips


        <%@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中/” 与您的目录


6
2017-08-18 11:13





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

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

2
2017-08-04 16:48





一个正确/有效的例子:

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

0
2018-04-06 12:49



从Servlet 2.1规范来看,这不是'正确的'! - ingyhere


我用过这个,

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

0
2017-07-23 12:00