2017-07-06 204 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。這些數據庫實際上是爲了這個確切的用例而發明的。

我真的不喜歡告訴人們唯一的解決方案是完成與他們所做的完全不同的事情,但在這種情況下,我無法強調足夠強調文本文件在管理數據方面的差異。