通过数组给您的文件排序

lijing8014

lijing8014

2016-02-19 12:28

下面图老师小编要向大家介绍下通过数组给您的文件排序,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!
当您使用FILESYSTEMOBJECT对象获得某个目录下的文件列表的时候,你有没有发现无法控制它们的排序方式,比如按照名字排序,按照扩展名排序,按照文件大小排序等等,让我们试着用数组给它们排排序儿。

    如果您想通过名字排序,那将是非常简单的,但是假如你想通过文件大小或者文件创立时间等等来排序的时候,那么将有点麻烦。我们将通过二维数组做到这一点。

    下面的代码演示了如何通过选择排序方式达到的我们目的,单击排序,点两次就反着排了。
HTML
HEAD
TITLE文件排序演示/TITLE
/HEAD
BODY
%
' 设定一个演示目录,:)
CONST DIRECTORY = "/"
' 用常数定义排序方式
CONST FILE_NAME = 0 '按照名字排序……依次类推
CONST FILE_EXT = 1
CONST FILE_TYPE = 2
CONST FILE_SIZE = 3
CONST FILE_CREATED = 4
CONST FILE_MODIFIED = 5
CONST FILE_ACCESSED = 6
'获得 排序命令,默认为按照名字排序
req = Request("sortBy")
If Len(req) 1 Then sortBy = 0 Else sortBy = CInt(req)
req = Request("priorSort")
If Len(req) 1 Then priorSort = -1 Else priorSort = CInt(req)
'设置倒序
If sortBy = priorSort Then
reverse = true
priorSort = -1
Else
reverse = false
priorSort = sortBy
End If
' 接下来开始我们真正的代码了。。。
path = Server.MapPath(DIRECTORY)
Set fso = CreateObject("Scripting.FileSystemObject")
Set theCurrentFolder = fso.GetFolder(path)
Set curFiles = theCurrentFolder.Files
' 给这些文件做一个循环
Dim theFiles()
ReDim theFiles(500) ' 我随便定的一个大小
currentSlot = -1 ' start before first slot
' 我们将文件的所有相关信息放到数组里面
For Each fileItem in curFiles
fname = fileItem.Name
fext = InStrRev(fname, ".")
If fext 1 Then fext = "" Else fext = Mid(fname,fext+1)
ftype = fileItem.Type
fsize = fileItem.Size
fcreate = fileItem.DateCreated
fmod = fileItem.DateLastModified
faccess = fileItem.DateLastAccessed
currentSlot = currentSlot + 1
If currentSlot UBound(theFiles) Then
ReDim Preserve theFiles(currentSlot + 99)
End If
' 放到数组里
theFiles(currentSlot) = Array(fname,fext,ftype,fsize,fcreate,fmod,faccess)
Next
' 现在都在数组里了,开始下一步
fileCount = currentSlot ' 文件数量
ReDim Preserve theFiles(currentSlot)
' 排序
' (8 表示 string)
If VarType(theFiles(0)(sortBy)) = 8 Then
If reverse Then kind = 1 Else kind = 2 ' 给字符排序
Else
If reverse Then kind = 3 Else kind = 4 '数字、时间。。。
End If
For i = fileCount TO 0 Step -1
minmax = theFiles(0)(sortBy)
minmaxSlot = 0
For j = 1 To i
Select Case kind
Case 1
mark = (strComp(theFiles(j)(sortBy), minmax, vbTextCompare) 0)
Case 2
mark = (strComp(theFiles(j)(sortBy), minmax, vbTextCompare) 0)
Case 3
mark = (theFiles(j)(sortBy) minmax)
Case 4
mark = (theFiles(j)(sortBy) minmax)
End Select
If mark Then
minmax = theFiles(j)(sortBy)
minmaxSlot = j
End If
Next
If minmaxSlot i Then
temp = theFiles(minmaxSlot)
theFiles(minmaxSlot) = theFiles(i)
theFiles(i) = temp
End If
Next
' 结束
%
FORM Name="doSort" Method="Get"
INPUT Type=Hidden Name=priorSort Value="% = priorSort %"
INPUT Type=Hidden Name=sortBy Value="-1"
/FORM
SCRIPT Language="JavaScript"
function reSort(which)
{
document.doSort.sortBy.value = which;
document.doSort.submit();
}
/SCRIPT
CENTER
FONT Size="+2"
显示% = (fileCount+1) % 该目录下的文件% = path %
/FONT
P
单击排序,再点一次反向排序
P
TABLE Border=1 CellPadding=3
TR
THA HREF="javascript:reSort(0);"文件名/A/TH
THA HREF="javascript:reSort(1);"扩展名/A/TH
THA HREF="javascript:reSort(2);"类型/A/TH
THA HREF="javascript:reSort(3);"大小/A/TH
THA HREF="javascript:reSort(4);"建立时间/A/TH
THA HREF="javascript:reSort(5);"上次修改时间/A/TH
THA HREF="javascript:reSort(6);"上次存取时间/A/TH
/TR
%
For i = 0 To fileCount
Response.Write "TR" & vbNewLine
For j = 0 To UBound(theFiles(i))
Response.Write " TD" & theFiles(i)(j) & "/TD" & vbNewLine
Next
Response.Write "/TR" & vbNewLine
Next
%
/TABLE
/BODY
/HTML
展开更多 50%)
分享

猜你喜欢

通过数组给您的文件排序

Web开发
通过数组给您的文件排序

数组排序方法介绍

flash教程
数组排序方法介绍

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

数组数据排序的程序例子

ASP
数组数据排序的程序例子

JavaScript实现多维数组多键值排序方法

Web开发
JavaScript实现多维数组多键值排序方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Linux如何使用awk进行数组排序

电脑入门
Linux如何使用awk进行数组排序

如何通过微云发送文件给附近的设备?

电脑网络
如何通过微云发送文件给附近的设备?

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

提供几个关于采集的函数(ASP)

提供几个关于采集的函数(ASP)

VB数据库数据的选项录入及选项增减与编辑

VB数据库数据的选项录入及选项增减与编辑
下拉加载更多内容 ↓