请找到以下代码:
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
提供了D07141
和D07141101
,但File.realdirpath(d ,dir)
提供了展开的目录名称。你能澄清一下逻辑吗?
答案 0 :(得分:2)
来自文档:
返回实际路径名的实际(绝对)路径名 文件系统。真实路径名不包含符号链接或无用 点。
如果给出dir_string,则将其用作基本目录 解释相对路径名而不是当前目录。
真实路径名的最后一个组成部分可能不存在。
(http://apidock.com/ruby/v1_9_3_125/File/realdirpath/class)
它被扩展,因为这就是该方法的作用。您没有在puts
调用内的dir上调用#entries
,而是在File.realdirpath
的返回值上调用它,如上所述,它会扩展传入的条目。