Errno :: EISDIR'初始化' :是一个目录@ rb_sysopen - persistent.bak(Errno :: EISDIR)

时间:2015-09-11 13:52:22

标签: ruby

我正在遍历文件夹中的文件以搜索特定的字符串。 文件夹名称为persistent.bak。在浏览此文件夹时,它会给出错误...在'初始化' :是一个目录@ rb_sysopen - persistent.bak(Errno :: EISDIR)。

Dir.glob("**/*.*") do |file_name|
    fileSdfInput = File.open(file_name)
    fileSdfInput.each_line do |line|
        if ((line.include?"DATE") 
            @count = @count + 1
        end
    end
end

1 个答案:

答案 0 :(得分:4)

你的glob Dir.glob("**/*.*")匹配模式 persistent.bak 因此,在你的循环中,你实际上是在尝试打开名为persistent.bak的文件夹作为文件,而ruby并不欣赏。

为了说服自己,尝试输出文件名,你就会看到它。

最简单的解决方法:

Dir.glob("**/*.*") do |file|
  next if File.directory? file
  fileSdfInput = File.open(file)
  fileSdfInput.each_line do |line|
    if (line.include?"DATE")
      @count = @count + 1
    end
  end
end