我想使用File.dirname
來獲取Windows盒子上文件的目錄。我從Windows窗口中獲取文件(下面的「file1」),並將其返回到運行該腳本的Mac OS X框中。爲什麼File.dirname會返回期望的路徑?
下面file1 = "C:\Administrator\proj1\testFile.txt"
是簡化我的例子,然而,以使其更清晰,我從遙控盒得到這個值,並將其返回到我的開發:
file1 = "C:\Administrator\proj1\testFile.txt"
path = "#{File.dirname(file1)}"
puts "#{path}"
>> .
我很困惑,爲什麼它將返回'.'
。我對ruby-doc.org看到File.dirname
說以下內容:
「返回FILE_NAME給出除了最後一個文件名的所有組件都可以使用這兩種文件::分離器和文件形成的文件名::當File :: ALT_SEPARATOR不爲零時,將ALT_SEPARETOR作爲分隔符。「
我對File::SEPARATOR
和File::ALT_SEPARATOR
做了puts
,得到了以下幾點:
File::SEPARATOR >>/
File::ALT_SEPARATOR >>
我認爲這是因爲「\」是不是有效的文件分隔符。所以我將File::ALT_SEPARATOR
設置爲「\」。但是,即使在那之後,當我puts path
時,我仍然得到相同的值。
我嘗試使用File.realdirpath
這是結果:
file1 = "C:\Administrator\proj1\testFile.txt"
path = "#{File.realdirpath(file1)}"
puts "{path}"
>> /Users/me/myProject/C:\Administrator\proj1\testFile.txt
它似乎增加從那裏我叫Ruby腳本的路徑和附加的完整路徑(包括文件名)。似乎是奇怪的行爲。
任何想法,意見或建議將是偉大的。
您的代碼有問題。 'puts「path」'會打印字符串'path',甚至不是一個點。 –
對不起。只是把它複製錯了。現在修復。 –
你爲什麼使用字符串插值? –