我想知道如果我正在以正確的方式進行操作。打開文件後檢查文件是否被修改關閉
def checkout
clone = system("svn export #{file} tmp/")
open_file = system("start tmp/#{@file}")
end
現在,我可以使用默認編輯器打開我想要的文件,但是如何在關閉之前記錄文件是否被修改。
我應該創建一個Process
並做Process.wait
什麼?
感謝您的幫助
我想知道如果我正在以正確的方式進行操作。打開文件後檢查文件是否被修改關閉
def checkout
clone = system("svn export #{file} tmp/")
open_file = system("start tmp/#{@file}")
end
現在,我可以使用默認編輯器打開我想要的文件,但是如何在關閉之前記錄文件是否被修改。
我應該創建一個Process
並做Process.wait
什麼?
感謝您的幫助
如果你的意思是你是在Windows中使用start
,使用/wait
或/w
選項,使其等到編輯終止。
使用IO::read
檢查文件內容修改。 (在編輯器執行之前,之後)。
before = IO.read('tmp/#{@file}', {mode: 'rb'})
system("start /wait tmp/#{@file}")
after = IO.read('tmp/#{@file}', {mode: 'rb'})
# Check the file content modification.
if before != after:
# File changed!
如果你正在編輯一個巨大的文件,IO::read
會相應地消耗memroy。如Arup Rakshit建議使用File::mtime
,如果存儲庫中存在如此龐大的文件。 (缺點:假陽性警報保存未經修改)
用於同一File::mtime
方法。
將指定文件的修改時間作爲Time對象返回。
file_time_before_opening = File.mtime('your file/path')
# do file operation as you like
file_time_after_closing = File.mtime('your file/path')
# now compare file_time_before_opening and file_time_after_closing to know
# if it is modified or not.
聽起來很有趣去檢查出 – Supersonic
用戶,打開文件和before_opening時間已設置,用戶尚未完成編輯該文件,我已經獲得相同的時間before_closing – Supersonic
如果它的一個巨大的文件,你會消耗太多的內存這個微不足道的任務,檢查修改時間似乎是這樣做的最適當的方法 – bjhaid
+1 /等,如果我知道我不會問這個問題謝謝 – Supersonic
@bjhaid,我提到了內存消耗。感謝您的反饋。 – falsetru