2012-09-15 4 views
3

Comment tronquer le fichier à la taille N dans ocaml?Tronquer le fichier dans ocaml

Je ne vois pas de fonction dans Pervasive. La chose la plus proche est le drapeau "open_trunc" dont je ne suis pas vraiment sûr.

Répondre

3

Si vous êtes sous Unix, vous pouvez utiliser

val Unix.truncate : string -> int -> unit 

Il « runcates le fichier nommé à la taille donnée ». Mais cette fonction n'est pas implémentée dans la version Windows d'OCaml (ou plus précisément, elle n'est pas émulée).

Si vous êtes sous Windows et que vous voulez imiter, vous pourriez être intéressé par

val really_input : in_channel -> string -> int -> int -> unit 

"really_input ic buf pos len lit len caractères de canal ic, de les stocker dans la chaîne buf, à partir de numéro de caractère pos. Raise End_of_file si la fin du fichier est atteinte avant que len caractères aient été lus.

2

Je pense que vous avez raison. open_trunc -Ouvrez le fichier nommé pour l'écriture et renvoyez un nouveau canal de sortie sur ce fichier, positionné au début du fichier. Le fichier est tronqué à la longueur zéro s'il existe déjà. Il est créé s'il n'existe pas déjà. Augmenter Sys_error si le fichier n'a pas pu être ouvert.

Référez ce lien also.

2

Les capacités du système d'exploitation de Pervasives correspondent à peu près à ce que vous pouvez faire dans la norme C. Il n'y a pas de fonction pour tronquer un fichier à une longueur spécifiée en C standard, tout ce que vous pouvez faire est de tronquer un fichier vide lorsque vous ouvrez il (exposé à travers le drapeau Open_trunc). Il y en a un dans Unix/POSIX (truncate), alors recherchez-le dans le Unix module, qui a une fonction truncate (ou ftruncate pour un fichier ouvert, toujours suivant Unix/POSIX).