我读取了一个文本文件以从中获取一些信息,稍后我需要重命名该文件所在的目录.我无法做到这一点因为文件被锁定了.如果我注释掉从文件中读取的函数或者我手动解锁文件(解锁器实用程序),一切都很顺利.
我在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,并且当块终止时IO对象将自动关闭.
所以我不明白为什么文件仍然是开放的.
1.8.7中的单行代码读取文本文件并自动关闭它会是什么?
文档很清楚.但是,你正在通过该块collect.由于您没有将其传递给open您,因此您有责任关闭该文件.
要让文件自动关闭,请尝试以下操作:
File.open(file,"r") do |f|
f.collect # or whatever
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |