3

我在 Rails 上使用 ruby​​,我想知道是否有办法打开一个我缺少文件名的最后几个字符的文件。

例如:我的文件名为“/folder/files/A2222_revA.pdf”。但是,随着时间的推移,这些文件名从 A2222_revA 变为 A2222_revB 再变为 A2222_revC。我将路径和不变名称 (A2222) 保存为变量,我的目标是只打开任何名为 A2222 的文件...因为具有该特定前缀的文件永远不会超过一个。

有没有办法在指定文件夹中按字母数字顺序打开下一个文件名?

我有一个控制器来查看这些文件,如下所示:

  def view
    @drawing = Drawing.find(params[:id])
    @path = @drawing.draw_path(@drawing)

    send_file( @path,
    :disposition => 'inline',
    :type => 'application/pdf',
    :x_sendfile => true )
  end 

draw_path 方法如下所示:

  def draw_path(drawing)
    folder = drawing[:file_location]
    file_name = drawing[:drawing_number]
    path = "X://engineering/shop\ prints/"+folder+"/"+file_name+".pdf"
    return path
  end

显然这种方法并不完整,我需要添加更多逻辑。

4

3 回答 3

4

一种方法是获取与您的前缀匹配的文件列表,例如:

files = Dir.glob(File.join(path, "A2222_rev*"))
于 2013-11-08T14:58:18.347 回答
2

因此,如果在任何给定时间点确实只有一个文件,您可以

path = Dir["/folder/files/A2222_*.pdf"].first

不?

于 2013-11-08T14:59:35.130 回答
0

使用glob函数检索文件名,然后传递给 File.open

于 2013-11-08T14:58:10.210 回答