通過陣列給您的檔案排序

2022-09-28 11:06:10 字數 3434 閱讀 4917

當您使用filesystemobject物件獲得某個目錄下的檔案列表的時候,你有沒有發現無法控制它們的排序方式,比如按照名字排序,按照副檔名排序,按照檔案大小排序等等,讓我們試著用陣列給它們排排序兒。

如果您想通過名字排序,那將是非常簡單的,但是假如你想通過檔案大小或者檔案創立時間等等來排序的時候,那麼將有點麻煩。我們將通過二維陣列做到這一點。

下面的**演示了如何通過選擇排序方式達到的我們目的,單擊排序,點兩次就反著排了。

檔案排序演示

' 設定乙個演示目錄,:)

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 tffdqepwhefiles( 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 )ffdqepw < 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

' 結束

%>

顯示 該目錄下的檔案

單擊排序,再點一次反向排序

j**ascript:resort(0);">檔名

副檔名型別

大小建立時間

上次修改時間

上次訪問時間

for i = 0 to filecount

response.write "" & vbnewline

for j = 0 to ubound( thefiles(i) )

respo " " & thefiles(i)(j) & "" & vbnewline

next

response.write "" & vbnewline

next

%>

本文標題: 通過陣列給您的檔案排序

本文位址:

通過陣列的形式傳遞引數

用到陣列的形式傳遞引數的一般都是批量新增,批量刪除 還有就是批量判斷條件 首先宣告個全域性變數陣列 如下圖然後宣告乙個建構函式 如下圖 建構函式的作用主要是建立字段接收資料 因為最終靠字段的對應來傳遞資料 所以建構函式的建立是必需的 之後迴圈遍歷你需要傳遞的批量內容存入建構函式的字段中再記錄到陣列中...

JS通過陣列拼接JSON串的例子

json style width 100 height 50px background color yellow 解析json字串,小例子。引用newtonsoft.json.dll string restr jobject jo jobject jsonconvert.deserializeobj...

php通過asort 給關聯陣列按照值排序的方法

php通過asort 給關聯陣列按照值排序,和sort的區別是,sort為陣列中的單元賦予新的鍵名。原有的鍵名將被刪除。nums array 程式設計客棧 o 5,two 2,three 1 asort nums foreach nums as key val www.cppcns.com 本文標題...