2015-10-05 54 views
0

我有一個腳本根據輸入數據輸出URL。每行輸入生成大約20個URL。然後使用此輸出上傳到Akamai Content Control。但是,Akamai的文件大小限制爲50KB。限制輸出文件的大小,並根據需要使用Ruby創建其他文件

我知道我可以寫一個URL然後檢查文件大小。如果文件大小破壞緩衝區,請關閉該文件並創建一個新文件並重復。

我最終很好奇,是否有一種更加優雅的方式來處理Ruby內部更少的開銷/代碼。

感謝

+0

爲什麼不在寫入前檢查文件大小和新行的總和? – sawa

回答

0

寫的每一行檢查,如果文件大小+行大小是小於極限之前。寫入文件或相應地創建一個新文件。

index = 2; 
f = File.new('output_file.txt', 'w') 
while(there_is_new_output_to_write) do #get new line 
    if(f.size + output_line.size > LIMIT) do #if total size is too big 
     Fileutils.cp('output_file.txt','output_file' + index + '.txt') #copy 
     index = index + 1 #increment index for new file 
     f = File.new('output_file.txt', 'w') #override output file 
    end 
    f.puts(output_line) #write new line 
end 
#here You will have index -1 files 
#that is if index is 4, then you will have output_file.txt, output_file2.txt, output_file3.txt, 
#but NOT output_file4.txt! 

或者,如果這不是一個問題,你可以使用一些好的歸檔工具在那裏拼接文件,大小爲50KB爲你。

+0

我想過看看我是否可以使用Ruby的Logger創建文件,但它會放入一堆數據。我只需要一個URL,每行一個。 –

+0

希望我的回答清楚如何處理ruby中的文件/文件大小。 –