I/O
预定义值
stdin
是标准输入,通常指控制台输入stdout
是标准输出,通常指控制台输出stderr
是错误输出,通常指控制台输出,常用于错误输出
文本相关函数
print
与println
已在基础I/O提到
julia> s=readline() # 默认从 stdin 读入
喵
"喵"
julia> s=readuntil(stdin, '.') # 这个函数没有定义默认值 stdin
A red fox. Fox!
"A red fox"
julia> c=read(stdin, Char) # 多余的字符会被忽略(保留在控制台的缓冲区)
读入
'读': Unicode U+8BFB (category Lo: Letter, other)
生成文件I/O
文字写示例
julia> name=readline() # 多个I/O可以同时存在
Rratic
"Rratic"
julia> io=open("D:/test.txt","w") # 以写形式打开 D:/test.txt
IOStream(<file D:/test.txt>)
julia> isopen(io) # 查看是否成功打开
true
julia> print(io, "$(name)的文档") # 写入文字数据
julia> close(io) # 记得关闭
更方便地,可以使用 read(文件名)
直接读入数据(返回 UInt8
数组,文本需调用 String
转化)。可以使用 write(文件名, 数据)
直接写入数据。
通常来说,如果一个文件 I/O 流没有被关闭,那么操作系统不会允许其它程序对该文件进行「写」操作。因此,许多函数内部会利用 try-finally
保证调用 close
io=open(x, "w")
try
...
finally
close(io)
end
包裹
可以使用 IOBuffer(s)
将字符串包裹成IO形式
julia> io=IOBuffer("buf")
IOBuffer(data=UInt8[...], readable=true, writable=false, seekable=true, append=false, size=3, maxsize=Inf, ptr=1, mark=-1)
julia> String(take!(io))
"buf"