幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3357|回复: 3

[其他] ruby File.read还有什么限制么?

[复制链接]

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2009-11-14 17:08:22 | 显示全部楼层 |阅读模式
RT.。。。

怎么
f = File.open("xxx","r")
f.pos = pos  #获取的起始位置
str = f.read[0...length].clone  #length 是这要读取的长度

就这样。。。

print str[index]
当 index > 1326 时  都是 nil了  长度length 是 1693  还没超过长度啊。。。。怎么就是nil了

File.open ("xxx")这个文件 690M。。。文件读取的起始位置是 0x5DD  刚开始读呢。。。

我用winhex打开文件

pos:  1326+0x5DD -> 10  ->这个读到了,后面都变成nil了
         1327+0x5DD -> 1A
         1328+0x5DD -> 69


为什么我写的这段就变成nil了呢?
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2009-11-14 19:47:27 | 显示全部楼层
  1. f.pos = pos  #获取的起始位置
复制代码
这样的写法不是获取起始位置,而是指定读取位置了。
え~え~お!!!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
 楼主| 发表于 2009-11-14 19:56:07 | 显示全部楼层
就是在这个地方开始读啊
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

136

主题

1751

帖子

548

积分

版主

Rank: 7Rank: 7Rank: 7

积分
548
发表于 2009-11-15 14:27:56 | 显示全部楼层
手上只有ruby 1.9.1,这东西的api文档里的read好像没这样的用法。我试着直接用f.read[0...length].clone 这写法。ruby.exe直接就挂掉了。
read([length [, buffer]]) => string, buffer, or nil
  1. f = File.new("testfile")
  2. f.read(16)   #从pos往后读16个bytes的长度
复制代码

1.8系列的我没装,不太清楚,你等ruby高手来吧。
え~え~お!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-3-29 09:38 , Processed in 0.016909 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表