下面的代码是由远到近排序,如何改成最新的在最前面?
File d = new File(path);
File list[] = d.listFiles();
int count=list.length;
list.lastModifyDate();
int pageno=0;
int pagesum=20;
int pagenum=count/pagesum;
String p=request.getParameter("pageno");
if(p!=null)
pageno=Integer.parseInt(p);
for(int i=(pageno*pagesum);i<list.length&i<((pageno+1)*pagesum);i++)
out.print(list[i].getName());
}
%>谢谢!

解决方案 »

  1.   

    File d = new File(path);
    File list[] = d.listFiles();
    int count=list.length;
    list.lastModifyDate();
    int pageno=0;
    int pagesum=20;
    int pagenum=count/pagesum;
    String p=request.getParameter("pageno");
    if(p!=null)
    pageno=Integer.parseInt(p);
    int tmp=list.length<((pageno+1)*pagesum)?((pageno+1)*pagesum):list.length;
    for(int i=tmp;i>pageno*pagesum;i--)
    out.print(list[i].getName());
    }
    -----------
    手敲的没有验证,但思路就这个样子!
      

  2.   

    一、加list.lastModifyDate();提示如下错误:
    org.apache.jasper.JasperException: Unable to compile class for JSP: 
    An error occurred at line: 28 in the jsp file: /index.jsp
    Cannot invoke lastModifyDate() on the array type File[]
    25: File list[] = d.listFiles();//总条数
    26: //Collection.reverse(list);//z,C,a
    27: int count=list.length;
    28: list.lastModifyDate();
    29: 
    30: int pageno=0;
    31: int pagesum=20;//每页显示条数二、用int tmp=list.length<((pageno+1)*pagesum)?((pageno+1)*pagesum):list.length;
    for(int i=tmp;i>pageno*pagesum;i--)
    out.print(list[i].getName());
    }
    提示如下错误:
    description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 7572: </tr>
    73: <tr>
    74: <td>
    75: <li><a href="/reports/<%=list[i].getName()%>"><%= list[i].getName()%><BR>
    76: </td>
    77: </tr>
    78: <%
    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    root cause java.lang.ArrayIndexOutOfBoundsException: 14981
    org.apache.jsp.index_jsp._jspService(index_jsp.java:141)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
      

  3.   

    public class ArrayIndexOutOfBoundsException
    extends IndexOutOfBoundsException用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。 
      

  4.   

    下面是取出后冒泡排序法,请帮忙看一下如何优化,现在目录下有2000个文件就很慢了<%@ page contentType="text/html; charset=GBK" %>
    <%@ page language="java" pageEncoding="gbk"%>
    <%@ page import="java.io.*" %>
    <%@ page import="java.util.*" %>
    <html>
    <head>
    <title>
    filelist
    </title>
    </head>
    <body bgcolor="#ffffff">
    <CENTER>
    <FONT SIZE = 5 COLOR = blue>研究报告</FONT>
    </CENTER>
    <BR>
    <HR>
    <BR>
    <form name="Formdy" method="post" action="">
    <%
    //取得目前目录的磁盘目录
    String path ="D:/apache-tomcat-7.0.27/webapps/ROOT/reports"; //request.getRealPath("/");
    //建立代表目前目录位置的d变量
    File d = new File(path);
    //取得代表目录中所有文件
    File list[] = d.listFiles();//总条数
    File filesname[]=d.listFiles();
    //Collection.reverse(list);//z,C,a
    int count=list.length;
    //list.lastModifyDate();int pageno=0;
    int pagesum=20;//每页显示条数
    int pagenum=count/pagesum;//总页数
    String p=request.getParameter("pageno");
    String p1=request.getParameter("pageno1");
    if(p1!=null && !p1.equals("")){p=p1;}
    if(p!=null)
    pageno=Integer.parseInt(p);// Collections.sort(list);
     //else
    //pageno=0;
    //if(pageno>pagesum)
    //pageno=pagesum;
    //if(pageno<0)
    //pageno=0;
    %>
    <table border="0">
    <Font color = blue><ul><%//int tmp=list.length<((pageno+1)*pagesum)?((pageno+1)*pagesum):list.length;
    //for(int i=tmp;i>pageno*pagesum;i--)
    for(int i=0;i<list.length;i++){  for(int j=0;j<list.length;j++){
        if(list[i].lastModified()>list[j].lastModified()){
         filesname[i] = list[i];   
         list[i] = list[j];   
         list[j] = filesname[i]; 
    }}}
    for(int i=(pageno*pagesum);i<list.length&i<((pageno+1)*pagesum);i++){
    %>
    <tr>
      <td>&nbsp;</td>
    </tr>
    <tr>
    <td>
    <li><a href="/reports/<%=list[i].getName()%>"><%= list[i].getName()%><BR>
    </td>
    </tr>
    <%
    }
    %>
    </ul>
    </Font>
    <tr>
    <td align="center"><a href="index.jsp?pageno=0">首页</a><%if(pageno>0){%>
    <a href="index.jsp?pageno=<%=pageno-1%>">上一页</a>
    <%}%>
    <%
    //for(int i=0;i<pagenum;i++){
       
      out.print("当前第"+pageno+"页"+"/总计"+pagenum+"页"); 
    //}
    %><%if(pageno>=0){%>
    <a href="index.jsp?pageno=<%=pageno+1%>">下一页</a>
    <%}%><a href="index.jsp?pageno=<%=pagenum%>">未页</a><input name="pageno1" type="text" onKeyDown="if(event.keyCode==13)event.keyCode=9" onKeyUp="value=value.replace(/[^\d]/g,'') " size="3" maxlength="5"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))">

    <input type="button" name="Submit" value="GO" onClick="CheckPage()" class="button"></td>
    </tr>
    </table></form>
    </body>
    </html>
    <script language=javascript>
    function CheckPage(){
      if( Formdy.pageno1.value ==""){
        alert("请输入您要去的页码!");
        return false;
      }
      Formdy.action="";
      Formdy.submit(); 
    }</script>