使用ColdFusion附加txt文档的标题

时间:2014-11-21 10:06:38

标签: coldfusion

使用ColdFusion我想在每次向txt文件中添加一行时附加文件的标题

标题的格式如下:

E.g.
1234567890123456789012345678901234567890
BEEP BANK       1000009099810

标题的内容分为:

Element         Description                                        Pad char Pad side    Length
Bank name       First 16 characters of the Bank name as per file   [space]  right       16
                name, padded with spaces at the end if the name is 
                less than 16 characters long. Convert to Uppercase  
Record count    Number of data records in the file, depicted as a  0        left        3
                3 character, zero-left-padded string    
Total value     Value (in cents) of all amounts in the file,       0        left        10
                depicted as a  10 character, zero-left-padded 
                string  
Total Header Record Length  29

目前我正在运行一个循环并且在循环内部我想更新标题内部的记录计数和总值,同时仍然保持相同的格式

我想知道的是如何获取名为test.txt的txt文件的标题并拆分数值以获取单个值,即记录计数和总值以使用它们并添加我的新动态值对他们?

提前致谢

2 个答案:

答案 0 :(得分:1)

您必须解析该文件。如果你想保持它的人类可读性(而不是使它成为XML或类似),那么你必须告诉coldfusion如何找到要更新的字符。

我假设标题始终是静态的,只记录记录的数字会发生变化。

最好的方法是使用转义字符在标题中包含这些记录,例如{{125}}。

然后获取文件,并执行regexp查找{{。?}},更新数字并替换。然后写入文件。

或者只删除整个标题,并在每次保存文件时使用更新数据重写。在你的情况下哪个更容易。

答案 1 :(得分:1)

这将读取文件并替换第一行,并将其写回原始文件。

    <cffile action="read" variable="textDoc" file="#getDirectoryFromPath(getTemplatePath())#/test.txt" />
    <cfset textDoc = listSetAt(textDoc,1,"new header line","#chr(10)##chr(13)#")>
    <cffile action="write" file="#getDirectoryFromPath(getTemplatePath())#/test.txt" output="#textDoc#">

在这个例子中,我们使用new-line和carriage-return作为列表分隔符。