使用JSP列出文件夹中特定扩展的文件

时间:2013-05-02 18:55:13

标签: file jsp

<h1>Directories</h1>
<ul>
<%
String root="c:/Repository/WebApplication/mydocs/javadoc/";
java.io.File file;
java.io.File dir = new java.io.File(root);

String[] list = dir.list();

if (list.length > 0) {

for (int i = 0; i < list.length; i++) {
file = new java.io.File(root + list[i]);
if (file.isDirectory()) {
%>
<li><a href="javadoc/<%=list[i]%>" target="_top"><%=list[i]%></a><br>
<%
 }
}
}
%>
</ul>

以上代码有效,即列出了所有文件,我只想列出特定扩展名的文件,例如.txt。任何人都可以告诉我如何解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

您需要一个FilenameFilter并以这样的方式实现方法accept,使您只接受具有所需扩展名的文件。

以下是示例代码

new File("").list(new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
            return name.endsWith(".txt");
        }
    });

请注意,此代码不区分大小写,因此将过滤掉以.TXT结尾的文件。您可能需要提取扩展名,然后使用equalsIgnoreCase进行比较。或者,您可以在致电LowerCase之前endsWith name

答案 1 :(得分:0)

<%@ page import="java.io.*" %>
<% 
    String file = application.getRealPath("/results");
    File f = new File(file);
    String [] fileNames = f.list();
    int i = 0;
    String fname=null;
    File [] fileObjects= f.listFiles();
    BufferedReader readReport;
    int num=0;

    {
        %>
        <table name="reports">
        <th width=12.5% align="center" bgcolor="gray">Execution ID</th>
        <th width=12.5% align="center" bgcolor="gray">Parent suite name</th>
        <th width=12.5% align="center" bgcolor="gray">Execution date</th>
        <th width=12.5% align="center" bgcolor="gray">Total execution time(seconds)</th>
        <th width=12.5% align="center" bgcolor="gray">Pass</th>
        <th width=12.5% align="center" bgcolor="gray">Fail</th>
        <th width=12.5% align="center" bgcolor="gray">Skip</th>
        <th width=12.5% align="center" bgcolor="gray">Summary</th>
        <%
    }

    for (i=0; i < fileObjects.length; i++)
    {

        if(!fileObjects[i].isDirectory())
            {
            fname = "../results/"+fileNames[i];

            if(fname.endsWith(".html"))
            {
                String Name = fileNames[i].substring(0, fileNames[i].indexOf('.'));


                    { 
                        %>
                        <tr bgcolor="lightgray">
                            <td width=12.5% align="center">
                                <%=Name%>
                            </td>

                            <td width=12.5% align="center">

                            </td>

                            <td width=12.5%  align="center">

                            </td>

                            <td width=12.5%  align="center">

                            </td>

                            <td width=12.5%  align="center">

                            </td>

                            <td width=12.5%  align="center">

                            </td>

                            <td width=12.5%  align="center">

                            </td> 

                            <td width=12.5%  align="center">
                                <a HREF="<%= fname %>" target="loadReport"><button>View</button></a>
                            </td>
                        </tr>

                        <%
                    }
                }
        }
    }
    {%></table> <%}
%>