2012-02-21 1 views
0

다음을 수행하는 ColdFusion 코드를 작성할 수 있습니까? .cfm 파일을 읽고 필터링하는 ColdFusion 코드

  1. 가 추가 ".CFM"가 어떤 단어에 대한 .CFM 파일
  2. 필터에게 .CFM 파일을 읽어보십시오.
  3. 2 단계에서 찾은 파일 이름 목록을 디렉터리의 파일과 비교하여 디렉터리에 .cfm 파일에없는 파일이 있는지 확인하십시오.

2 단계에서 href에서 .cfm 파일 이름을 찾으려고합니다.

감사

답변

3

내 테스트의 디렉토리는 reader.cfm과 list.cfm로 설정했다. 예제 목록 파일에서 list.cfm 파일을 찾을 수 있었고 reader.cfm 파일이 존재하지 않는 것으로 기록했습니다.

아마 파일에서 cfm 파일 이름 목록을 얻는 더 좋은 방법입니다. 나는 정규 표현식에 전문가가 아니지만 원하는대로 작동하는지 테스트했다. 귀하의 링크에 _ 또는 -와 같은 특수 문자가있는 경우 아마 작동하지 않을 것입니다. 이것은 당신에게 뭔가를 제공해야합니다. list.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#"> 

내용은 내가 사용. 우리의 디렉토리 내용을 통해

<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 블록은 현재 배열 위치 내용을보고이를 외부 루프 이름 값과 비교합니다. 2nd if는 현재 배열 위치 값과 가능한 최대 배열 위치 값을 봅니다. 우리는 현재 locaction == 최대 위치에 도달했는지 안다. 외부 루프 요소 (디렉토리 목록)가 내부 루프 (파일 배열)에서 발견되지 않았다. 첫 번째 if 블록의 <cfbreak>에 대한 작업입니다. 이 <cfbreak>은 유효한 일치 항목을 찾으면 두 번째 내부 루프에서 벗어납니다. 이렇게하면 두 번째 if 블록이 vaild 찾기에서 실행되지 않습니다.

희망이 도움이됩니다. 답변을 받았다고 생각하면 대답을 수락하는 것을 잊지 마십시오. XD

+0

감사합니다. 이것은 매우 도움이되었습니다. 두 번째 은 무엇을 설명 할 수 있습니까? "i"가 fileResult의 요소와 같은지 확인해야하는 이유는 무엇입니까? "i"가 fileResult와 어떻게 같지 않을 수 있습니까? 하지만이 태그가 필요합니다. – MahlerAdmirer

+0

위의 설명을 추가했습니다. 너무 혼란 스럽기를 바란다. 나는 코드를 설명하는 데 아주 훌륭하다. P – ShortRound1911

관련 문제