读取文件后,ruby将其打开/锁定在Windows XP上

Rad*_*dek 0 ruby

我读取了一个文本文件以从中获取一些信息,稍后我需要重命名该文件所在的目录.我无法做到这一点因为文件被锁定了.如果我注释掉从文件中读取的函数或者我手动解锁文件(解锁器实用程序),一切都很顺利.

我在ruby 1.8.7(2010-08-16 patchlevel 302)[i386-mingw32]

该行使文件保持打开状态 File.open(file).readlines.each{|line|

这两行使文件保持打开状态

    my_file=File.open(file,"r")
    my_file.collect {|line|
Run Code Online (Sandbox Code Playgroud)

除非我最后使用关闭文件 my_file.close

男子IO.html#方法-C-开放的核心1.8.7状态

如果给出了可选代码块,它将作为参数传递给io,并且当块终止时IO对象将自动关闭.

所以我不明白为什么文件仍然是开放的.

1.8.7中的单行代码读取文本文件并自动关闭它会是什么?

Ser*_*sev 5

文档很清楚.但是,你正在通过该块collect.由于您没有将其传递给open您,因此您有责任关闭该文件.

要让文件自动关闭,请尝试以下操作:

File.open(file,"r") do |f|
  f.collect # or whatever
end
Run Code Online (Sandbox Code Playgroud)

  • @Radek:什么时候"一条线"才是有效的要求?(提示:从不) (2认同)