2010-11-14 41 views
2

當我在IRB運行此代碼:出錯創建新的文件

File.open('j1.txt','w') {|f| f.write("doc1223423")} 

它成功地工作。但是,當我做的方法一樣在我的控制器,它提供了以下錯誤:

Errno::ENOENT (No such file or directory - file location as specified) 

爲什麼會這樣?如何解決?

+0

你有沒有嘗試過使用文件的絕對路徑?如果使用絕對路徑時沒有發生錯誤,則可能是您的控制器無法從其所在的位置找到該文件。 – Vic 2010-11-14 20:14:53

+0

@Vic:是的......我嘗試了絕對路徑,但問題仍然存在,現在我終於解決了。感謝您的幫助 – 2010-11-14 20:40:37

+1

解決方法是什麼? – Vic 2010-11-14 21:03:44

回答

6

解決。 我指定的上述文件位置不存在。 我在做這樣的

File.open ("#{RAILS_ROOT}/jatin/j.txt", 'w+') do |f| 
      f.write("blah") 
    end 

但一些目錄/ jatin /是不存在的,所以解決辦法是先創建目錄,然後創建該文件。

Dir::mkdir("#{RAILS_ROOT}/jatin") 

感謝您的幫助球員。

2

嘗試chagning 'w''w+' - 這將創建一個新的文件,'w'只是打開一個現有寫(更新)。

這裏是一個很好的一輪的例子,可以幫助:

+0

仍然不起作用 – 2010-11-14 20:16:33

+0

嘗試使用你有寫權限的特定路徑,例如'/ tmp/j1.txt'(如果在Unix上)或'c:/ windows/temp/j1.txt「(如果在Windows上)。 – 2010-11-14 20:20:53

+0

感謝您的鏈接,它真的很有幫助。 – 2010-11-14 20:39:41