我正在開發一款應用程序,用於將視頻發送到下拉框中。因爲視頻可能需要幾分鐘到幾個小時才能發送到保管箱,所以我想確保文件在我的應用程序開始處理之前完成寫入。Ruby File.size?似乎緩存文件大小
我認爲最簡單的方法是檢查文件的大小,每次通過守護進程索引dropbox。如果文件大小在兩次或更多遍中保持不變,則應用程序可以假定該文件已完成寫入。
但是,當我在我的應用程序的Rails控制檯中混淆了這一點時,它似乎正在緩存文件大小。當我將視頻文件導出到投遞箱目錄時,我會看到這一點。在OS X 10.6查找程序中,文件大小會隨着視頻的寫入而不斷更新。如果我運行File.size?在寫入的文件上,我會重複獲得相同的大小,直到它隨機更新。下面是一些示例輸出,我正在運行File.size?方法每秒一次。
有什麼我失蹤了嗎?
謝謝。
File.size?("/Volumes/FCP_Edit/ProgramingDropBox/test.mov")
=> 95053324
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/test.mov")
=> 95053324
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 23769068
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 23769068
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 23769068
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 23769068
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 23769068
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 23769068
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 64888832
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 64888832
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 64888832
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 64888832
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 64888832
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 64888832
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 64888832
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 64888832
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 123609088
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 336691200
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 336691200
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 336691200
>> File.size?("/Volumes/FCP_Edit/ProgramingDropBox/dumb.mov")
=> 336691200
您可能必須讓緩衝區在另一端齊平以得出結論。檢查'lsof'可能是一個更好的解決方案。 – strager 2010-06-23 11:27:24