作者fsj (夏天就是要去野台!)
看板Ruby
标题[问题] LRTHW ex16问题
时间Sun Apr 14 19:07:17 2013
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
1F:推 mars90226:模式改成"w+",才不会把档案清空 04/14 20:55
2F:→ fsj:您好, 我修改为target=File.open(filename, "w+")然後读 04/14 23:44
3F:→ fsj:target.size 仍然为 0 04/14 23:45
4F:→ fsj:我会再试着用w+去google一下, 谢谢! 04/14 23:45
5F:推 mars90226:你有确认你的档案有东西吗? 04/15 09:43
6F:→ fsj:有确认, 而且我另外在删档前写了一行直接file.size是有大小的 04/15 23:05
7F:→ fsj:所以觉得奇怪..然後去试"w", 或read mode都不会有大小 04/15 23:06
8F:→ godfat:你的名称不一致所以看不出来你怎麽测的,但大概是没flush吧 04/16 22:23
9F:推 lTERRAl:有可能是开档之後并没有关档 也就是还在暂存档中 04/17 17:43
10F:→ lTERRAl:而size这个method是从外界下size指令 所以档案并未存入 04/17 17:44
11F:→ lTERRAl:所以得到0这个回传 你可以试试close後再下target.size 04/17 17:46
12F:→ fsj:谢谢各位, 的确是因为没有close所造成的, 我关掉隔天再开 04/17 22:21
13F:→ fsj:就发现了, 谢谢楼上各位!! 04/17 22:21