2011-07-17 152 views
0

有一個數組數組,分成若干個包含相同元素數的分區(作爲array_chunk()的輸出)。它們被寫入單獨的文件,文件1.txt包含第一個塊,2.txt - 第二個等等。現在我想讓這些文件包含初始數組的不同數量的元素。當然,我可以將它們讀入一個數組並重新分割,但它需要相當大的內存。您能否幫助我提供更高效的解決方案? (文件的數量和最後的大小單獨存儲)我沒有其他的想法...重新排列文件中的數據

+1

你能解釋一下嗎?您有幾個尺寸相同的文件,最後一個文件可能更小,您想通過將元素從一個文件移動到另一個文件來調整文件大小? – Nobody

+0

是的,它們的大小將保持相等,也是「全局」記錄順序。 –

回答

0

你知道什麼是不同的數字是?如果你這樣做,那麼你可以很容易地讀取數據,然後每當你填寫一個塊寫入數據。在僞代碼中:

for each original file: 
    for each record: 
     add record to buffer 
     if buffer is desired size: 
      write new file 
      clear buffer 
write new file 

很明顯,您需要將新文件與舊文件分開。然後,一旦你重寫了數據,你可以以某種方式交換它們。 (我個人建議有兩個目錄,然後在完成後重命名目錄。)

如果您不知道塊的大小應該是多少(例如,您想要特定數量的文件),那麼首先做任何需要的工作來解決問題,然後繼續原始解決方案。

+0

謝謝。我知道大小(忘記提及)。那麼,也許你的版本並不是最有效率的,因爲有些文件實際上並不需要完全重寫(只重命名和修改),但是很容易計算它們的數量然後使用你的代碼。 –