2013-04-06 76 views
0

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

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 

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

我该怎么做?

+0

例如这里你似乎也不在乎你得到答案。如果你想让人们花时间回答你的问题,你需要付出一些努力,否则他们不会。 – Thomas 2013-04-07 10:54:12

回答

0

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

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

事实上,在我的系统(一个64位系统)中,max_int非常大,所以Buffer.add_channel甚至不会尝试读取那么多的数据。它引发了一个Invalid_argument异常。

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