0
創建文件並填充數據後,在關閉之前,需要讀取零件數據,並且計算校驗和 。問題是您在關閉文件之前無法讀取數據。代碼 的代碼片段如下。寫入後讀取文件的一部分
我的問題是如何創建文件,寫入數據,讀取文件的一部分,然後關閉它?一個 可能的解決方案是在寫入文件之前使用緩衝區,但如果 文件很大,比如MB,GB,TB,PB,則不太方便。
begin
File.open(@f_name,"w+") do |file|
@f_old_size.times do
file.write "1"
end
file.flush
file.sync
#################
# read file fails
# before close
#################
while line = file.gets
puts line
end
end
rescue => err
puts "Exception: #{err}"
end
#####################
# read file successfully
# after close it
#####################
File.open(@f_name,"r") do |file|
line = file.gets
puts line
end
我不知道Ruby,但那些看起來像正常的stdio'fopen'標誌..而不是使用'w',爲什麼不使用'a'來打開文件以追加(讀寫)? – paddy 2012-07-31 23:44:14
在紅寶石中,「a」模式不可讀 – SecureFish 2012-08-01 01:28:42
文件在讀取或寫入時通常處於鎖定狀態。儘管很棘手,但很容易出錯,並且不被認爲是好的做法,所以可以立即從文件讀取/寫入。 – lyonsinbeta 2012-08-01 04:00:28