2011-03-07 75 views
0

我正在使用Coldfusion MX,我想動態創建.htaccess文件的一部分。Java或Coldfusion文件操作

,比如我有一個部分的開始和結束的樣子

> # --- Start Part1 ---# 
> 
> # --- End Part1 ---# 

現在每次我生成這樣的.htaccess ColdFusion的內容,我想刪除Start and End 部分之間的內容和新內容寫入這裏。

Coldfusion有可能嗎?

由於

回答

1

假設一個文件.htaccess.template這樣:

# BEFORE 
# --- Start Part1 ---# 

# --- End Part1 ---# 
# AFTER 

在同一目錄中有一個ColdFusion腳本,說htaccess.cfm(名稱並不重要):

<!--- note double pound signs, necessary to escape in CF ---> 
<cfset start = "## --- Start Part1 ---##"> 
<cfset end = "## --- End Part1 ---##"> 

<cfsavecontent variable="replacement"><cfoutput> 
I will appear between the start and end comments! 
Replace me with what you want to appear in the .htaccess file. 
</cfoutput></cfsavecontent> 

<cfset template = fileRead(getDirectoryFromPath(getCurrentTemplatePath()) & "/.htaccess.template")> 

<cfset startPos = find(start, template)> 
<cfset endPos = find(end, template)> 

<cfset before = left(template, startPos + len(start) - 1)> 
<cfset after = right(template, len(template) - endPos + 1)> 

<cfset content = "#before##replacement##after#"> 

<!--- <cfoutput><pre>#content#</pre></cfoutput> ---> 

<cfset path = getDirectoryFromPath(getCurrentTemplatePath()) & "/.htaccess"> 
<cfif fileExists(path)><cfset fileDelete(path)></cfif> 
<cfset fileWrite(path, content)> 

這將產生一個文件.htaccess在同一個目錄下。我認爲這個問題將涉及.htaccess上的任何文件系統鎖,以防止刪除/覆蓋,因爲我不確定在這種情況下你需要做什麼。

在這個例子中的.htaccess將是:

# BEFORE 
# --- Start Part1 ---# 
I will appear between the start and end comments! 
Replace me with what you want to appear in the .htaccess file. 
# --- End Part1 ---# 
# AFTER 
1
  1. 文件讀入到一個變種與<cffile>
  2. 轉動VAR成使用listToArray()陣列,利用底線CHR的作爲分隔符
  3. 打開<cfsavecontent>
  4. 循環並輸出直到達到陣列# --- Start Part1 ---#
  5. 添加您自己的內容
  6. 循環並跳過陣列,直到你達到# --- End Part1 ---#
  7. 環通輸出數組,直到你到達終點
  8. 寫的內容保存到一個新的.htaccess與<cffile>

不幸的是,直到我們可以使用CF8來逐行讀取一個任意大的文件,而不會耗盡內存。請參閱:http://coldfused.blogspot.com/2007/07/new-file-io-in-coldfusion-8.html