从文件内容打印字符串缓冲区

时间:2013-04-06 02:36:30

标签: ocaml

我想打印文件的内容。我试着使用字符串缓冲区:

let ch = open_in "myfile.txt" in
let buf = Buffer.create 1024 in
(try Buffer.add_channel buf ch max_int with _ -> ());
close_in ch;

let string = Buffer.contents buf
print_endline string

这只是给我一个语法错误。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您需要提供正确的频道长度:

let ic = open_in "foo" in
let len = in_channel_length ic in
let buf = Buffer.create len in
Buffer.add_channel bif ic len;
let str = Buffer.contents b in
print_endline str

答案 1 :(得分:0)

我看到的唯一语法错误是在in之后缺少let string = Buffer.contents buf

Buffer.add_channel的目的是将给定通道中给定数量的字符精确添加到缓冲区。除非文件"myfile.txt"特别大,否则打印时缓冲区将为空。

事实上,在我的系统(64位系统)上,max_int非常大,Buffer.add_channel甚至没有尝试读取那么多数据。它引发Invalid_argument例外。