Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby-如何为文本文件中的每一行分配ID_Ruby_File Io - Fatal编程技术网

Ruby-如何为文本文件中的每一行分配ID

Ruby-如何为文本文件中的每一行分配ID,ruby,file-io,Ruby,File Io,我想创建一个本地化文件,它由ID行组成;每一行都可以通过其ID调用,并在以后的程序中显示 我以前使用的方法是使用win32api使用.ini文件,它可以读取一对键和值。这是通过调用它的键来实现的最简单的方法。但我遇到了unicode问题,因此,非标准字符在ANSI中读取并显示为随机框。 这个程序是在ruby 1.8.1中编译的,没有办法升级它的ruby版本,因为我没有它的源代码 所以,我的问题是,如何通过从 文件没有在整个文件中循环?ID必须不仅是 包含多个且仅包含ruby方法。文本文件必须是纯

我想创建一个本地化文件,它由ID行组成;每一行都可以通过其ID调用,并在以后的程序中显示

我以前使用的方法是使用win32api使用.ini文件,它可以读取一对键和值。这是通过调用它的键来实现的最简单的方法。但我遇到了unicode问题,因此,非标准字符在ANSI中读取并显示为随机框。 这个程序是在ruby 1.8.1中编译的,没有办法升级它的ruby版本,因为我没有它的源代码

所以,我的问题是,如何通过从 文件没有在整个文件中循环?ID必须不仅是 包含多个且仅包含ruby方法。文本文件必须是纯文本.txt

在使用String、IO和File类的方法组合之前,我尝试了它,结果是,我必须首先在整个文件中循环以搜索特定ID并返回其值。文件很大,如果我必须在一秒钟内阅读一篇文章10次左右,我认为这不是正确的方法


提前谢谢

我不明白你怎么能不读整个文件就做到这一点。当然,如果将文件保存在内存中,则只需读取一次文件,然后对所有行进行随机访问。我之所以这样做,是因为我认为,如果我必须在短时间内多次读取文本,则会影响性能。告诉我,如果一个文件被读取,下次我读取同一个文件时,它是否会保留在内存中,它会读取内存,还是会再次将其分配到内存?如果我错了,请纠正我,我不太了解内存访问(ruby不明确访问C++之类的内存地址),或者,我可以创建一个散列,在程序启动时存储文件中的所有键和值?打开文件后,将内容存储在变量中,并且它不会再次读取文件。可以将整个文件读取到内存中(例如,使用
file.read
);然后可以处理返回的数据,除非显式地读取,否则不会再次读取该文件。您还可以逐行读取文件,并在运行时生成内存中的数据结构,从而无需将整个文件读入内存。