看板 Ruby 關於我們 聯絡資訊
Ruby 2.0 各位好, 我在複習LRTHW的時候遇到一個問題, 不過跟練習本身無關 http://ruby.learncodethehardway.org/book/ex16.html filename = ARGV.first target = File.open(filename, 'w') target.truncate(target.size) 其中這行code是作者寫錯的 target.truncate(target.size) 他說應該是要改成.truncate(0), 檔案清光. 我剛才拿.size來練習一下, 發現即便是在清除檔案之前的target.size都是0 於是我改掉write mode, 換成read mode, 但是.size一樣還是0 如果我直接讀filename.size的話就可以成功讀到檔案大小 是因為File.open的關係嗎? 還是有其他的原因呢? 謝謝各位! -- http://www.facebook.com/AdJudge 廣告, 創意無限 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.164.81.78
mars90226:模式改成"w+",才不會把檔案清空 04/14 20:55
fsj:您好, 我修改為target=File.open(filename, "w+")然後讀 04/14 23:44
fsj:target.size 仍然為 0 04/14 23:45
fsj:我會再試著用w+去google一下, 謝謝! 04/14 23:45
mars90226:你有確認你的檔案有東西嗎? 04/15 09:43
fsj:有確認, 而且我另外在刪檔前寫了一行直接file.size是有大小的 04/15 23:05
fsj:所以覺得奇怪..然後去試"w", 或read mode都不會有大小 04/15 23:06
godfat:你的名稱不一致所以看不出來你怎麼測的,但大概是沒flush吧 04/16 22:23
lTERRAl:有可能是開檔之後並沒有關檔 也就是還在暫存檔中 04/17 17:43
lTERRAl:而size這個method是從外界下size指令 所以檔案並未存入 04/17 17:44
lTERRAl:所以得到0這個回傳 你可以試試close後再下target.size 04/17 17:46
fsj:謝謝各位, 的確是因為沒有close所造成的, 我關掉隔天再開 04/17 22:21
fsj:就發現了, 謝謝樓上各位!! 04/17 22:21