2014-04-10 13 views
1

我嘗試做您如何在計劃中提交I/O?

(define o (open-output-file "txt.txt")) 

(write "hope" o) 

(close-output-port o) 

它的工作原理是第一次,那麼它說

open-output-file: file exists 
    path: C:\...\proj3\txt.txt 

,並拒絕它了寫它。我檢查了權限,但事實並非如此。 我甚至連入我的學校系統,當我嘗試第二次打開文件時,它會給出「未指定的返回值」錯誤 。

任何幫助都可能會使我的生活增加幾年,這是越來越加重。

回答

1

從至少R5RS起,標準方案定義爲call-with-{input,output}-filewith-{input,output}-from-file。這些確保創建的端口對於非本地出口適當關閉,並在保留延續時適當打開(保持打開)。

至於您現有的文件,標準化較少。在R5RS中,當文件存在時打開輸出文件時的行爲是「未指定」的,並且沒有標準函數delete-file,甚至file-exists?。大多數R5RS方案提供了一種非標準的方式來刪除文件。在R7RS中,您可以找到這兩個功能。

[編輯原因=「刪除代碼迴應第一條評論」]

+1

壞的壞!只要調用'delete-file',如果文件不存在就不會報錯。在任何語言模式是一個典型的競爭條件。 :) – leppie

+0

好點。編輯。謝謝。 – GoZoner