2011-07-17 103 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

谢谢。我知道大小(忘记提及)。那么,也许你的版本并不是最有效率的,因为有些文件实际上并不需要完全重写(只重命名和修改),但是很容易计算它们的数量然后使用你的代码。 –