2017-04-09 61 views
2

這是我當前的目錄結構的源代碼在OCaml的父目錄中創建一個文件?

/project 
    /code (source code) 
    /build (contains the .exe) 

部分:

let() = 
    let oc = open_out file in (* create or truncate file, return channel *) 
    fprintf oc "%s\n" message; (* write something *) 
    close_out oc; 

如果我運行在.EXE /建立子目錄,它會在/編譯輸出文件。但我想創建一個名爲result的新目錄並在其下創建輸出文件。

新的目錄結構:

/project 
    /code (source code) 
    /build (contains the .exe) 
    /result (contains the output file) 

如何父目錄下創建一個新的目錄,並使用OCaml的文件寫入呢?謝謝!

回答

3

如果你手工創建結果目錄,你可以比更換你的文件名:

let oc = open_out ("../result/"^file) in 
... 

如果您需要創建從你的程序的目錄,你可以使用Unix.mkdir "../result"。請務必將其包裝在try ... with Unix.Error -> ...中以處理目錄已存在的情況。

+0

它工作正常。謝謝! –

+1

如果你想要使用['Unix.mkdir'](http://caml.inria.fr/pub/docs/manual-ocaml/libref/Unix.html#VALmkdir)'「../ result」',你可以使用從OCaml創建目錄。一定要把它封裝在['try ... with Unix.Error ...'](http://caml.inria.fr/pub/docs/manual-ocaml/libref/Unix.html#EXCEPTIONUnix_error)中處理目錄已經存在的情況! – ChriS

+0

@ChriS你沒錯,我沒有提到它,因爲我不確定Unix功能與Windows的行爲。但顯然它工作正常。我將這添加到我的答案:) – ghilesZ