“dir”如何与“puts”和“File :: realdirpath()”一起使用

时间:2013-01-30 07:24:49

标签: ruby

请找到以下代码:

current_dir = Dir.pwd
Dir.chdir('C:\Documents and Settings\Peter\My Documents\userdata\Downloaded Files')
current_dir = Dir.pwd

Dir.entries(current_dir)[2..-1].each do |dir|

  puts dir
  puts "-------"
  Dir.entries(dir)[2..-1].each do |d|

    #file_loc_dir =
    #File.rename(d, dir.concat(d))
    puts File.realdirpath(d ,dir)
    #puts dir.concat(d)

  end
  puts "-------"
end

输出:

C:\Documents and Settings\peter\My Documents\userdata\Ruby\Scripts>FileNamere
naming.rb
D07141
-------
C:/Documents and Settings/peter/My Documents/userdata/Downloaded Files/D07141
/Water lilies.jpg
C:/Documents and Settings/peter/My Documents/userdata/Downloaded Files/D07141
/Winter.jpg
-------
D07141101
-------
C:/Documents and Settings/peter/My Documents/userdata/Downloaded Files/D07141
101/Water lilies.jpg
C:/Documents and Settings/peter/My Documents/userdata/Downloaded Files/D07141
101/Winter.jpg

混乱:

虽然puts dir提供了D07141D07141101,但File.realdirpath(d ,dir)提供了展开的目录名称。你能澄清一下逻辑吗?

1 个答案:

答案 0 :(得分:2)

来自文档:

  

返回实际路径名的实际(绝对)路径名   文件系统。真实路径名不包含符号链接或无用   点。

     

如果给出dir_string,则将其用作基本目录   解释相对路径名而不是当前目录。

     

真实路径名的最后一个组成部分可能不存在。

http://apidock.com/ruby/v1_9_3_125/File/realdirpath/class

它被扩展,因为这就是该方法的作用。您没有在puts调用内的dir上调用#entries,而是在File.realdirpath的返回值上调用它,如上所述,它会扩展传入的条目。