是否可以編寫執行以下操作的ColdFusion代碼?用於讀取和過濾.cfm文件的ColdFusion代碼
- 閱讀.CFM文件
- 濾波器.CFM文件有「.CFM」附加到它的任何一句話。
- 將步驟2中找到的文件名列表與目錄中的文件進行比較,以確定目錄中是否存在任何不在.cfm文件中的文件。
在第2步中,我試圖在href中查找.cfm文件名。
感謝
是否可以編寫執行以下操作的ColdFusion代碼?用於讀取和過濾.cfm文件的ColdFusion代碼
在第2步中,我試圖在href中查找.cfm文件名。
感謝
我測試的目錄是建立一個reader.cfm和list.cfm。它能夠在示例列表文件中找到list.cfm文件,並將reader.cfm文件記錄爲不存在。
Theres可能是一種更好的方式從文件中獲取cfm文件名列表。在正則表達式中我不是大師,但我確實測試了它的工作情況。如果你的鏈接有特殊的字符如_或 - ,它可能不會工作。這應該給你一些開始雖然。
<cffile action="read"
file="#expandpath('list.cfm')#"
variable="fileList">
<cfset fileResult = rematchNoCase('([a-z]|[A-Z]|[0-9])+\.cfm', fileList)>
<cfdirectory
directory="#expandPath('.')#"
action="list"
filter="*.cfm"
listInfo="name"
recurse = "no"
type="file"
name="dirList">
<cfset notInFile = ArrayNew(1)>
<cfoutput>
<cfloop query="dirList">
<cfloop from="1" to="#arrayLen(fileResult)#" index="i">
<cfif dirList.name eq fileResult[i]>
found one! #dirList.name#<br>
<cfbreak>
</cfif>
<cfif i eq #arrayLen(fileResult)#>
Item not found! #dirList.name#<br>
<cfset _r = ArrayAppend(notInFile, dirList.name)>
</cfif>
</cfloop>
</cfloop>
</cfoutput>
<cfdump var="#notInFile#">
list.cfm文件的內容我用。
<a href="someRealLink.cfm">click me to fun</a>
something
other thing
a coldfusion.cfm thing
stuff
things
yar.cfm
blah
Something.cfm
0912.cfm
some123.cfm
cfm
list.cfm
通過我們的目錄內容的第一個循環週期。第二個循環循環遍歷我們正在查看的cfm文件中的數組數組條目。第一個if塊查看當前數組位置內容並將其與外部循環名稱值進行比較。第二個if查看當前數組位置值和最大數組位置值。我們知道如果我們到達當前位置==最大位置可能 - 在內部循環(文件數組)中找不到外部循環元素(目錄列表)。這是第一個if區塊中的<cfbreak>
。當我們找到有效匹配時,<cfbreak>
將跳出第二個內部循環。這可以防止第二個if塊在vaild查找中執行。
希望這會有所幫助。如果您覺得已回答,請不要忘記接受答案。XD
謝謝。這非常有幫助。你能解釋第二個做什麼?爲什麼我們必須檢查「i」是否等於fileResult的元素?如何「我」不等於fileResult?雖然,這個標籤是必需的。 –
MahlerAdmirer
2012-02-29 15:53:40
我在上面添加了一個解釋。我希望這不是太混亂,我不擅長解釋代碼:P – ShortRound1911 2012-03-01 15:32:44