对某目录下的文件按照日期进行排序

对日期进行排序

下面是一个示例 ASP 页(感谢 Eric 的工作!),该页使用 FileSystemObjectscripting 对象来获取文件名集合,然后按创建日期对其进行排序。有关 FileSystemObject scripting 对象的文档,可以在 Microsoft Windows Script Technologies 站点找到。

调用 GetFolder() 方法以检索文件夹对象的指定的路径。该文件夹对象包含可以使用 Enumerator 对象访问的 files 集合。每个文件项都是按照文件名的顺序检索的,因此将它们分配给一个数组以便在稍后对其进行排序。

    arr[i++] = {path : fc.item().Path, date : fc.item().DateCreated};

上面显示的是一种不很常见的分配语法,这种语法称为对象文字,它包含用逗号分隔的属性规范列表。每个属性规范都由属性名及其后面的属性值组成。此对象文字语法用于创建具有 path 和 date 这两个属性的对象。

使用 Array 对象的 sort() 方法可以指定我们自己的比较函数 sortByDate,以便确定排序顺序。在本例中,comparison 函数返回一个指示两个项在创建日期上的相对顺序的值,但可以轻松地针对其他文件属性对该函数进行改写。

function sortByDate(f1, f2)
{
  
if (f1.date < f2.date)
    
return -1;
  
else if (f1.date > f2.date)
    
return 1;
  
else 
    
return 0;
}
function showfiles(path)
{
  
var fso, f, f1, fc, arr, i, s;
  fso 
= new ActiveXObject( "Scripting.FileSystemObject" );
  f 
= fso.GetFolder( path );

  
// Build the file list
  arr = new Array();
  i 
= 0;
  
for ( fc = new Enumerator( f.files ); !fc.atEnd(); fc.moveNext() )
    arr[i
++= {path : fc.item().Path, date : fc.item().DateCreated};

  
// Sort the file list
  arr.sort( sortByDate );

  
// Display the file list
  s = "";
  
for ( i=0 ; i     s += arr[i].path + "
";
  
return s;
}

Response.Write( showfiles( Server.MapPath( 
"." ) ) );
posted @ 2005-04-16 14:37  PowerProject-企业项目管理系统  阅读(1783)  评论(1编辑  收藏  举报