2017-07-06 167 views
0

修改这种文件我有这样一个文件:如何通过红宝石

Fruit.Store={ 
    #order:123, order:345, order:456 
    #order:789 
    "customer-id:12345,item:store/apple" = 10;  
    "customer-id:23456,item:store/banana" = 10; 
    "customer-id:23456,item:store/watermelon" = 10; 
    #order:987 
    "customer-id:67890,item:store/pear" = 10; 
} 

除注释,每一行都有相同的格式:客户编号和项目:存储/是固定的,以客户ID是一个5位数字。文件中有大约1000个独特的行。

当基于相同的客户ID和水果类型以不同数量放置新订单时,我希望将订单ID添加到上面的注释行中并更新数量,就像新订单001放置了信息“customer-id:23456,item:store/watermelon”= 5;比我们应该有一个新的文件:

Fruit.Store={ 
    #order:123, order:345, order:456 
    #order:789, order:000 
    "customer-id:12345,item:store/apple" = 10;  
    "customer-id:23456,item:store/banana" = 10; 
    "customer-id:23456,item:store/watermelon" = 5; 
    #order:987 
    "customer-id:67890,item:store/pear" = 10; 
} 

是否有可能以有效的方式这样做?由于文件必须逐行读写,我们如何检测匹配的信息并返回上一行进行修改?谢谢。

+0

该文件来自哪里?什么程序生成它? –

+1

不要以这种格式保存数据。以易于解析的格式(JSON,CSV,XML等)将其保存在数据库或其他文件中。在每次更新数据后生成所需格式的文件,但从不读取它。 – axiac

+0

这是一个手动生成的文件,由于某些原因,它必须采用txt格式...谢谢 –

回答

0

总之:不,不可能以有效的方式这样做你最好打赌的是打开单独的文件进行阅读和写作,但即使如此,你仍然会一遍又一遍地重写整个文件。

最终,您应该使用某种参考数据库,如SQL。这些数据库实际上是为了这个确切的用例而发明的。

我真的不喜欢告诉人们唯一的解决方案是完成与他们所做的完全不同的事情,但在这种情况下,我无法强调足够强调文本文件在管理数据方面的差异。