如何在Crystal中读取文件?

5

我之前一直是一名 Ruby 程序员,最近开始学习 Crystal。但是我发现关于 File 类的资料很少,我想要打开和读取一个文件,但是却遇到了错误。

file = File.open("ditto.txt")
file = file.read

tequila@tequila-pc:~/code$ crystal fileopen.cr
Error in fileopen.cr:2: wrong number of arguments for 'File#read' (given 0, expected 1)
Overloads are:
 - IO::Buffered#read(slice : Bytes)
 - IO#read(slice : Bytes)

file = file.read
            ^~~~

1
请注意,错误消息还说IO#read(slice : Bytes) - File从IO继承了read方法。根据IO#read的文档,它需要一个参数。您可能想尝试使用File.read类方法。 - Stefan
1个回答

7
您可能要寻找的是 IO#gets_to_end。它会将整个文件读入一个String中。但您也可以使用File.read
file_content = File.read("ditto.txt")

IO#read 是一种更低级别的方法,它允许将 IO 的部分内容读取到字节切片中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接