2017-04-09 2 views
2

Dies ist meine aktuelle VerzeichnisstrukturErstellen Sie eine Datei im übergeordneten Verzeichnis in OCaml?

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

Teil des Quellcodes:

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

Wenn ich .exe in dem run/Unterverzeichnis erstellen, wird die Ausgabedatei im Verzeichnis/Build erstellen . Aber ich möchte ein neues Verzeichnis mit dem Namen result erstellen und die Ausgabedatei darunter erstellen.

neue Verzeichnisstruktur:

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

Wie ein neues Verzeichnis unter dem übergeordneten Verzeichnis erstellen und Schreiben von Dateien in sie OCaml mit? Vielen Dank!

Antwort

3

Wenn Sie von Hand das Ergebnis Verzeichnis erstellen, können Sie als Ihr Dateinamen ersetzen mit:

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

Wenn Sie das Verzeichnis aus Ihrem Programm erstellen müssen, können Sie Unix.mkdir "../result" verwenden. Stellen Sie sicher, dass Sie es in eine try ... with Unix.Error -> ... umbrechen, um den Fall zu behandeln, wo das Verzeichnis bereits existiert

+0

Es hat funktioniert. Vielen Dank! –

+1

Sie können ['Unix.mkdir'] (http://caml.inria.fr/pub/docs/manual-ocaml/libref/Unix.html#VALmkdir)' "../ result" 'verwenden, wenn Sie möchten Erstellen Sie das Verzeichnis von OCaml. Stellen Sie sicher, dass Sie es in ein ['versuchen ... mit Unix.Error ...'] (http://caml.inria.fr/pub/docs/manual-ocaml/libref/Unix.html#EXCEPTIONUnix_error) umwandeln Behandeln Sie den Fall, in dem das Verzeichnis bereits existiert! – ChriS

+0

@ChriS Du hast Recht, ich habe es nicht erwähnt, weil ich mich über das Verhalten von Unix-Funktionen mit Windows unsicher war. Aber anscheinend funktioniert es gut. Ich habe das zu meiner Antwort hinzugefügt :) – ghilesZ

Verwandte Themen