[問題] LRTHW ex16問題

看板Ruby作者 (夏天就是要去野台!)時間11年前 (2013/04/14 19:07), 編輯推噓3(3010)
留言13則, 4人參與, 最新討論串1/1
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

04/14 20:55, , 1F
模式改成"w+",才不會把檔案清空
04/14 20:55, 1F

04/14 23:44, , 2F
您好, 我修改為target=File.open(filename, "w+")然後讀
04/14 23:44, 2F

04/14 23:45, , 3F
target.size 仍然為 0
04/14 23:45, 3F

04/14 23:45, , 4F
我會再試著用w+去google一下, 謝謝!
04/14 23:45, 4F

04/15 09:43, , 5F
你有確認你的檔案有東西嗎?
04/15 09:43, 5F

04/15 23:05, , 6F
有確認, 而且我另外在刪檔前寫了一行直接file.size是有大小的
04/15 23:05, 6F

04/15 23:06, , 7F
所以覺得奇怪..然後去試"w", 或read mode都不會有大小
04/15 23:06, 7F

04/16 22:23, , 8F
你的名稱不一致所以看不出來你怎麼測的,但大概是沒flush吧
04/16 22:23, 8F

04/17 17:43, , 9F
有可能是開檔之後並沒有關檔 也就是還在暫存檔中
04/17 17:43, 9F

04/17 17:44, , 10F
而size這個method是從外界下size指令 所以檔案並未存入
04/17 17:44, 10F

04/17 17:46, , 11F
所以得到0這個回傳 你可以試試close後再下target.size
04/17 17:46, 11F

04/17 22:21, , 12F
謝謝各位, 的確是因為沒有close所造成的, 我關掉隔天再開
04/17 22:21, 12F

04/17 22:21, , 13F
就發現了, 謝謝樓上各位!!
04/17 22:21, 13F
文章代碼(AID): #1HQeteWr (Ruby)