Java或Coldfusion文件操作

时间:2011-03-07 11:10:02

标签: java coldfusion

我正在使用Coldfusion MX,我想动态创建.htaccess文件的一部分。

例如我有一个部分的开始和结束看起来像

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

现在每次我在coldfusion中生成这个.htaccess内容我想删除Start and End之间的内容 零件并在此处写下新内容。

Coldfusion可以吗?

由于

2 个答案:

答案 0 :(得分:1)

  1. 使用<cffile>
  2. 将文件读入var
  3. 使用listToArray()将var转换为数组,使用endline chr作为分隔符
  4. 打开<cfsavecontent>
  5. 循环并输出数组,直到您到达# --- Start Part1 ---#
  6. 添加您自己的内容
  7. 循环并跳过数组,直至到达# --- End Part1 ---#
  8. 循环并输出数组,直到到达结尾
  9. 使用<cffile>
  10. 将保存的内容写入新的.htaccess

    不幸的是,直到我们可以使用的CF8才能逐行读取任意大的文件而不会耗尽内存。请参阅:http://coldfused.blogspot.com/2007/07/new-file-io-in-coldfusion-8.html

答案 1 :(得分: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