File io ColdFusion修改文本文件中的一行

File io ColdFusion修改文本文件中的一行,file-io,coldfusion,edit,File Io,Coldfusion,Edit,有没有办法在ColdFusion中编辑一行文本文件的内容 据我所知,我必须读取并缓冲整个文本文件,然后按原样逐行重新写入,直到找到需要修改的行,输入所需的值,然后继续按原样重新写入其余的行 我不喜欢重写整个文件的想法。。我想找到一种方法来编辑一行,你有什么建议 更多详细信息 基本上,我有一个如下的配置文件 my_own.thingy.blabla1 = "true"; my_own.thingy.bla_bla = 1337; my_own.thingy.foo_bar_baz = "what

有没有办法在ColdFusion中编辑一行文本文件的内容

据我所知,我必须读取并缓冲整个文本文件,然后按原样逐行重新写入,直到找到需要修改的行,输入所需的值,然后继续按原样重新写入其余的行

我不喜欢重写整个文件的想法。。我想找到一种方法来编辑一行,你有什么建议

更多详细信息

基本上,我有一个如下的配置文件

my_own.thingy.blabla1 = "true";
my_own.thingy.bla_bla = 1337;
my_own.thingy.foo_bar_baz = "what ever...";
我的CFC控制器收到一个请求,比如“编辑bla_bla到42”

我需要

  • 将配置文件读入变量
  • 在变量中找到定义
    bla_bla
    的位置
  • 将子串1337替换为42
  • 使用包含已修改文件文本的已修改变量重写文件
  • 我正在寻找一种执行步骤2和步骤3的好方法,因为#1和#2是微不足道的


    编辑:有人指出我要使用JSON,但我不知道这在这里是如何应用的。

    当然要编辑文本文件中的一行,当你要“保存”文件时,你必须重写整个文件,但是为什么不逐行写入整个文件(使用cffile read)到一个变量中呢,更改文件的适当部分,然后使用cffile write将整个文件写回


    不要认为我会建议您一行一行地写入文件,以找到要编辑的行。

    当然要编辑文本文件中的一行,当您要“保存”文件时,您必须重写整个文件,但是,与其逐行写入文件,为什么不将整个文件(使用cffile read)读入一个变量,更改文件的适当部分,然后使用cffile write将整个文件写回


    不要认为我会建议您一次只写一行来找到您想要编辑的行。

    如果您不想手动编辑配置文件,那么使用JSON是一个好方法,但是如果您需要能够使用文本编辑器,则使用“老式的”.INI样式的配置文件更容易使用

    我建议用4种方法创建一个简单的组件: i) 将配置读入变量 ii)获取配置参数的值 iii)更新配置参数的值 iv)将整个配置写回文件


    正如其他人所指出的,您最终还是要更新整个文件,除非文件很大,否则对应用程序性能的影响很可能是最小的。保持代码简单可能是一个更大的好处。

    如果您不想手动编辑配置文件,使用JSON是一个很好的方法,但是,如果您需要能够使用文本编辑器,则使用“old school”.INI样式的配置文件更容易

    我建议用4种方法创建一个简单的组件: i) 将配置读入变量 ii)获取配置参数的值 iii)更新配置参数的值 iv)将整个配置写回文件


    正如其他人所指出的,您最终还是要更新整个文件,除非文件很大,否则对应用程序性能的影响很可能是最小的。保持代码简单可能是一个更大的好处。

    “您有什么建议?”-只需使用JSON,停止不必要的工作!想想文件是如何存储的:它是一系列表示字符的字节。“单行”不存在,因为换行符只是字符。如果任何一行的长度发生了变化,那么它之后所有字符的位置也随之发生了变化,所以当该行中的字符数发生变化时,“编辑一行”就没有意义了,所有其他字符都将被移动/更改。“只要已经使用JSON,停止不必要的工作!”这对我没有多大帮助。。。请解释一下好吗?(你其余的评论没有教我任何我不知道的东西)读一下你的更新。由于这是一种结构,我认为@PeterBoughton建议您将配置文件存储为JSON格式,这将非常有意义。然后,您可以在CF中创建配置作为结构,并使用SerializeJSON函数将其转换为JSON以将其保存到文件中,使用DeserializeJSON函数将其从JSON转换回CF结构以在应用程序中使用。因为它是一个CF结构,所以您可以直接引用它来更新、添加和删除值。您想解释一下吗?是的,就这样。如果控制该文件,则可以使用任何格式保存数据。用正则表达式解析内容会增加不必要的复杂性。正如Peter所建议的,将其存储为JSON。然后你可以用一两行代码来加载/保存属性(详见Andrew的评论)。我的目的似乎是要激怒你,但事实并非如此。我很想说“给你,用这个”就可以解决你的问题,但是给你一个80%的解决方案,几乎肯定会引起问题,如果我知道你可以通过使用简单的数据格式(如JSON)轻松获得100%的解决方案,因为相关的功能已经存在,那么给你一个80%的解决方案就是一种伤害。“你的建议是什么?”-只要使用JSON就行了,不要再做不必要的工作了!想想文件是如何存储的:它是一系列表示字符的字节。“单行”不存在,因为换行符只是字符。如果任何一行的长度发生变化,那么它之后所有字符的位置都会发生变化,因此你的”编辑一行“当该行中的字符数发生变化时,所有其他字符都将被移动/更改,这毫无意义。”只需使用JSON,停止不必要的工作!“这对我没有多大帮助……请解释一下好吗?(你其余的评论没有教我任何我还没有教过的东西。)