对日期进行排序
下面是一个示例 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 函数返回一个指示两个项在创建日期上的相对顺序的值,但可以轻松地针对其他文件属性对该函数进行改写。
{
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( " . " ) ) );