AnyMath 文档

I/O和网络

一般I/O

stdout::IO

引用标准输出流的全局变量。

stderr::IO

引用标准错误流的全局变量。

stdin::IO

引用标准输入流的全局变量。

read(filename::AbstractString)

将文件的全部内容读取为 向量{UInt8}.

read(filename::AbstractString, String)

以字符串的形式读取文件的全部内容。

read(filename::AbstractString, args...)

打开文件并读取其内容。 阿格斯 被传递给 讀!:这相当于 打开(io->读取(io,args。..),文件名).

write(filename::AbstractString, content)

编写规范的二进制表示 内容 到一个文件,如果它还不存在,将被创建,如果它确实存在,将被复盖。

返回写入文件的字节数。

open(f::Function, command, args...; kwargs...)

类似于 打开(命令,args。..;夸格斯。..),但呼叫 f(溪) 在生成的进程流上,然后关闭输入流并等待进程完成。 返回返回的值 f 关于成功。 如果进程失败,或者进程尝试将任何内容打印到stdout,则抛出错误。

open(command, stdio=devnull; write::Bool = false, read::Bool = !write)

开始跑步 命令 异步,并返回一个 过程::IO 对象。 如果 讀! 是真的,那么从进程读取来自进程的标准输出和 [医]心肺 可选地指定进程的标准输入流。 如果 是真的,然后写入进程的标准输入和 [医]心肺 可选地指定进程的标准输出流。 进程的标准错误流连接到当前全局 斯德尔.

open(command, mode::AbstractString, stdio=devnull)

命令 异步。 像 打开(命令,stdio;读,写) 除了通过模式字符串而不是关键字参数指定读写标志。 可能的模式字符串是:

模式 资料描述 关键词

r

讀!

w

写=真

r+

读,写

读=真,写=真

w+

读,写

读=真,写=真

open(fd::OS_HANDLE) -> IO

取一个原始文件描述符将其包装在Julia感知的IO类型中,并获得fd句柄的所有权。 打电话 开(Libc.dup(fd)) 以避免原始句柄的所有权捕获。

警告不要在已由系统其他部分拥有的句柄上调用此句柄。

open(filename::AbstractString, [mode::AbstractString]; lock = true) -> IOStream

Open的替代语法,其中使用基于字符串的模式说明符而不是五个布尔值。 的价值 模式 对应于那些从 福朋(3) 或Perl 打开,并且等效于设置以下布尔组:

模式 资料描述 关键词

r

讀!

w

写入,创建,截断

写=真

a

写,创建,追加

追加=真

r+

读,写

读=真,写=真

w+

读,写,创建,截断

truncate=true,read=true

a+

读,写,创建,追加

append=true,read=true

锁,锁 关键字参数控制操作是否将被锁定以进行安全的多线程访问。

*例子*

julia> io = open("myfile.txt", "w");

julia> write(io, "Hello world!");

julia> close(io);

julia> io = open("myfile.txt", "r");

julia> read(io, String)
"Hello world!"

julia>write(io,"此文件为只读")
错误:ArgumentError:写入失败,IOStream不可写
[...]

朱莉娅>关闭(io)

julia>io=open("myfile.txt","a");

julia>write(io,"此流不是只读的")
28

朱莉娅>关闭(io)

julia>rm("myfile.txt")
兼容性

朱莉娅1.5 锁,锁 自Julia1.5起,参数可用。

open(filename::AbstractString; lock = true, keywords...) -> IOStream

以五个布尔关键字参数指定的模式打开文件:

关键字 资料描述 违约情况

讀!

开放阅读

!写

开放写作

截断,截断 | 追加

创建

创建如果不存在

!读与写 | 截断,截断 | 追加

截断,截断

截断为零大小

!读与写

追加

寻求结束

错误

没有传递关键字时的默认值是打开文件以供读取。 返回用于访问打开的文件的流。

锁,锁 关键字参数控制操作是否将被锁定以进行安全的多线程访问。

兼容性

朱莉娅1.5 锁,锁 自Julia1.5起,参数可用。

open(f::Function, args...; kwargs...)

应用函数 f 到的结果 打开(args...;夸格斯。..) 并在完成后关闭生成的文件描述符。

*例子*

julia> write("myfile.txt", "Hello world!");

julia> open(io->read(io, String), "myfile.txt")
"Hello world!"

julia> rm("myfile.txt")
IOStream

打包OS文件描述符的缓冲IO流。 主要用于表示由 打开.

IOBuffer(string::String)

创建只读 IOBuffer的 在给定字符串基础的数据上。

*例子*

julia> io = IOBuffer("Haho");

julia> String(take!(io))
"Haho"

julia> String(take!(io))
"Haho"
IOBuffer([data::AbstractVector{UInt8}]; keywords...) -> IOBuffer

创建内存中的I/O流,该流可以选择性地对预先存在的阵列进行操作。

它可以采用可选的关键字参数:

* 讀!, , 追加:限制对缓冲区的操作;请参阅 打开 有关详情。 * 截断,截断:将缓冲区大小截断为零长度。 * 最大尺寸:指定缓冲区不能增长的大小。 * [医]大小:表示缓冲区的容量(数据资料 必须实施 sizehint!(数据、尺寸)).

何时 数据资料 没有给出,默认情况下缓冲区将是可读和可写的。

传球 数据资料 作为划痕空间到 IOBuffer的写=真 可能会给出一次意想不到的行为 被称为 IOBuffer的,最好是考虑任何以前的引用 数据资料 无效;有效 IOBuffer的 "拥有"此数据,直到调用 拿!. 任何间接突变到 数据资料 通过打破预期的抽象,可能导致未定义的行为 IOBuffer的. 如果 写=真 IOBuffer可以在任何偏移量处存储数据,在其他偏移量处留下任意值。 如果 最大尺寸>长度(数据),IOBuffer可能会完全重新分配数据,这些数据在任何未完成的绑定中都可能可见,也可能不可见。 阵列.

*例子*

julia> io = IOBuffer();

julia> write(io, "JuliaLang is a GitHub organization.", " It has many members.")
56

julia> String(take!(io))
"JuliaLang is a GitHub organization. It has many members."

julia> io = IOBuffer(b"JuliaLang is a GitHub organization.")
IOBuffer(data=UInt8[...], readable=true, writable=false, seekable=true, append=false, size=35, maxsize=Inf, ptr=1, mark=-1)

julia> read(io, String)
"JuliaLang is a GitHub organization."

julia> write(io, "This isn't writable.")
ERROR: ArgumentError: ensureroom failed, IOBuffer is not writeable

julia> io = IOBuffer(UInt8[], read=true, write=true, maxsize=34)
IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=0, maxsize=34, ptr=1, mark=-1)

julia> write(io, "JuliaLang is a GitHub organization.")
34

julia> String(take!(io))
"JuliaLang is a GitHub organization"

julia> length(read(IOBuffer(b"data", read=true, truncate=false)))
4

julia> length(read(IOBuffer(b"data", read=true, truncate=true)))
0
take!(b::IOBuffer)

获取一个 IOBuffer的 作为阵列。 之后, IOBuffer的 被复位到其初始状态。

*例子*

julia> io = IOBuffer();

julia> write(io, "JuliaLang is a GitHub organization.", " It has many members.")
56

茱莉亚>字符串(拿!(io))
"JuliaLang是一个GitHub组织。 它有许多成员。"
Pipe()

构造一个未初始化的Pipe对象,特别是用于多个进程之间的IO通信。

如果在进程生成中使用对象,管道的适当末端将自动初始化。 这对于在流程管道中轻松获取引用非常有用,例如:

julia> err = Pipe()

# After this `err` will be initialized and you may read `foo`'s
# stderr from the `err` pipe, or pass `err` to other pipelines.
julia> run(pipeline(pipeline(`foo`, stderr=err), `cat`), wait=false)

# Now destroy the write half of the pipe, so that the read half will get EOF
julia> closewrite(err)

julia> read(err, String)
"stderr messages"

请参阅 Base.link_pipe!.

link_pipe!(pipe; reader_supports_async=false, writer_supports_async=false)

初始化 水管/水管 并链接 端点到 端点。 关键字参数 reader_supports_async/writer_supports_async 对应于 重叠的 在Windows和 O_非阻塞 在POSIX系统上。 他们应该是 真的 除非它们将被外部程序使用(例如,使用 ).

fdio([name::AbstractString, ]fd::Integer[, own::Bool=false]) -> IOStream

创建一个 [美]来自整数文件描述符的对象。 如果 自己的真的,关闭此对象将关闭底层描述符。 默认情况下, [美]梦 被垃圾回收时被关闭。 姓名 允许您将描述符与命名文件关联。

flush(stream)

将所有当前缓冲的写入提交给给定的流。

close(stream)

关闭I/O流。 执行一个 xref:base/io-network.adoc#Base.flush[冲水,冲水 第一个。

closewrite(stream)

关闭全双工I/O流的写入一半。 执行一个 xref:base/io-network.adoc#Base.flush[冲水,冲水 第一个。 通知另一端不再有数据写入底层文件。 这并不是所有IO类型都支持的。

如果实施, [医]近缘 导致后续 讀!eof,eof 将阻塞的调用分别抛出EOF或返回true。 如果流已经关闭,这是幂等的。

*例子*

julia> io = Base.BufferStream(); # this never blocks, so we can read and write on the same Task

julia> write(io, "request");

julia> # calling `read(io)` here would block forever

julia> closewrite(io);

julia> read(io, String)
"request"
write(io::IO, x)

将值的规范二进制表示形式写入给定的I/O流或文件。 返回写入流的字节数。 请参阅 印刷业编写文本表示(使用可能依赖的编码 伊俄).

写入值的字节序取决于主机系统的字节序。 在写入/读取时转换为/从固定的字节序(例如使用 htol的ltoh)以获得跨平台一致的结果。

您可以使用相同的值编写多个值 调用,即以下是等价的:

write(io, x, y...)
write(io, x) + write(io, y...)

*例子*

一致的序列化:

julia> fname = tempname(); # random temporary filename

julia> open(fname,"w") do f
           # Make sure we write 64bit integer in little-endian byte order
           write(f,htol(Int64(42)))
       end
8

julia> open(fname,"r") do f
           # Convert back to host byte order and host integer type
           Int(ltoh(read(f,Int64)))
       end
42

合并写入调用:

julia> io = IOBuffer();

julia> write(io, "JuliaLang is a GitHub organization.", " It has many members.")
56

julia> String(take!(io))
"JuliaLang is a GitHub organization. It has many members."

julia> write(io, "Sometimes those members") + write(io, " write documentation.")
44

julia> String(take!(io))
"Sometimes those members write documentation."

用户定义的纯数据类型 方法可以在包装在 参考书:

julia> struct MyStruct; x::Float64; end

julia> io = IOBuffer()
IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=0, maxsize=Inf, ptr=1, mark=-1)

julia> write(io, Ref(MyStruct(42.0)))
8

julia> seekstart(io); read!(io, Ref(MyStruct(NaN)))
Base.RefValue{MyStruct}(MyStruct(42.0))
read(command::Cmd, String)

命令 并将结果输出返回为 字符串.

read(command::Cmd)

命令 并将结果输出返回为字节数组。

read(s::IOStream, nb::Integer; all=true)

最多阅读 nb 字节从 s,返回 向量{UInt8} 读取的字节。

如果 全部真的 (默认),此函数将阻止重复尝试读取所有请求的字节,直到发生错误或文件结束。 如果 全部错误,最多一个 讀! 调用被执行,并且返回的数据量取决于设备。 请注意,并非所有流类型都支持 全部 选择。

read(s::IO, nb=typemax(Int))

最多阅读 nb 字节从 s,返回 向量{UInt8} 读取的字节。

read(filename::AbstractString)

将文件的全部内容读取为 向量{UInt8}.

read(filename::AbstractString, String)

以字符串的形式读取文件的全部内容。

read(filename::AbstractString, args...)

打开文件并读取其内容。 阿格斯 被传递给 讀!:这相当于 打开(io->读取(io,args。..),文件名).

read(io::IO, T)

读取类型的单个值 T伊俄,在规范的二进制表示。

请注意,Julia不会为您转换endianness。 使用方法 ntohltoh为此目的。

read(io::IO, String)

阅读全文 伊俄,作为一个 字符串 (另见 阅读,阅读).

*例子*

julia> io = IOBuffer("JuliaLang is a GitHub organization");

julia> read(io, Char)
'J': ASCII/Unicode U+004A (category Lu: Letter, uppercase)

julia> io = IOBuffer("JuliaLang is a GitHub organization");

julia> read(io, String)
"JuliaLang is a GitHub organization"
read!(stream::IO, array::AbstractArray)
read!(filename::AbstractString, array::AbstractArray)

从I/O流或文件中读取二进制数据,填写 阵列.

readbytes!(stream::IOStream, b::AbstractVector{UInt8}, nb=length(b); all::Bool=true)

最多阅读 nb 字节从 溪涧 进入 b,返回读取的字节数。 的大小 b 如果需要,将增加(即如果 nb 大于 长度(b) 并且可以读取足够的字节),但它永远不会减少。

如果 全部真的 (默认),此函数将阻止重复尝试读取所有请求的字节,直到发生错误或文件结束。 如果 全部错误,最多一个 讀! 调用被执行,并且返回的数据量取决于设备。 请注意,并非所有流类型都支持 全部 选择。

readbytes!(stream::IO, b::AbstractVector{UInt8}, nb=length(b))

最多阅读 nb 字节从 溪涧 进入 b,返回读取的字节数。 的大小 b 如果需要,将增加(即如果 nb 大于 长度(b) 并且可以读取足够的字节),但它永远不会减少。

unsafe_read(io::IO, ref, nbytes::UInt)

副本 n字节伊俄 流对象到 参考书 (转换为指针)。

建议亚型 T<:IO 重写以下方法签名以提供更有效的实现: unsafe_read(s::T,p::Ptr{UInt8},n::UInt)

unsafe_write(io::IO, ref, nbytes::UInt)

副本 n字节参考书 (转换为指针)到 伊俄 对象。

建议亚型 T<:IO 重写以下方法签名以提供更有效的实现: unsafe_write(s::T,p::Ptr{UInt8},n::UInt)

readeach(io::IO, T)

返回可迭代对象 读(io,T).

兼容性

朱莉娅1.6 读,读 需要Julia1.6或更高版本。

*例子*

julia> io = IOBuffer("JuliaLang is a GitHub organization.\n It has many members.\n");

julia> for c in readeach(io, Char)
           c == '\n' && break
           print(c)
       end
JuliaLang is a GitHub organization.
peek(stream[, T=UInt8])

读取并返回类型的值 T 从流而不推进流中的当前位置。 请参阅 startswith(stream,char_or_string).

*例子*

julia> b = IOBuffer("julia");

julia> peek(b)
0x6a

julia> position(b)
0

julia> peek(b, Char)
'j': ASCII/Unicode U+006A (category Ll: Letter, lowercase)
兼容性

Julia1.5接受类型的方法需要Julia1.5或更高版本。

position(l::Lexer)

返回当前位置。

position(s)

获取流的当前位置。

*例子*

julia> io = IOBuffer("JuliaLang is a GitHub organization.");

julia> seek(io, 5);

julia> position(io)
5

julia> skip(io, 10);

julia> position(io)
15

julia> seekend(io);

julia> position(io)
35
seek(s, pos)

求流到所述给定位置。

*例子*

julia> io = IOBuffer("JuliaLang is a GitHub organization.");

julia> seek(io, 5);

julia> read(io, Char)
'L': ASCII/Unicode U+004C (category Lu: Letter, uppercase)
seekstart(s)

寻求流到它的开始。

*例子*

julia> io = IOBuffer("JuliaLang is a GitHub organization.");

julia> seek(io, 5);

julia> read(io, Char)
'L': ASCII/Unicode U+004C (category Lu: Letter, uppercase)

julia> seekstart(io);

julia> read(io, Char)
'J': ASCII/Unicode U+004A (category Lu: Letter, uppercase)
seekend(s)

寻求一条小溪到它的尽头.

skip(s, offset)

求相对于当前位置的流。

*例子*

julia> io = IOBuffer("JuliaLang is a GitHub organization.");

julia> seek(io, 5);

julia> skip(io, 10);

julia> read(io, Char)
'G': ASCII/Unicode U+0047 (category Lu: Letter, uppercase)
mark(s::IO)

在stream的当前位置添加标记 s. 返回标记的位置。

unmark(s::IO)

从流中删除标记 s. 回来吧 真的 如果流被标记, 错误 否则。

请参阅 马克, 重置, 有标记的.

reset(s::IO)

重置流 s 到先前标记的位置,并移除该标记。 返回先前标记的位置。 如果未标记流,则抛出错误。

ismarked(s::IO)

回来吧 真的 如果流 s 被标记。

请参阅 马克, 未标记, 重置.

eof(stream) -> Bool

测试I/O流是否位于文件末尾。 如果流尚未耗尽,则此函数将阻止等待更多数据(如果需要),然后返回 错误. 因此,在看到后读取一个字节总是安全的 eof,eof 回来吧 错误. eof,eof 会回来 错误 只要缓冲数据仍然可用,即使连接的远程端已关闭。

*例子*

julia> b = IOBuffer("my buffer");

julia> eof(b)
false

朱莉娅>seekend(b);

朱莉娅>eof(b)
真的
isreadonly(io) -> Bool

确定流是否为只读。

*例子*

julia> io = IOBuffer("JuliaLang is a GitHub organization");

julia> isreadonly(io)
true

julia> io = IOBuffer();

julia> isreadonly(io)
false
iswritable(path::String)

回来吧 真的 如果给定的访问权限 路径 当前用户允许写入。

注意此权限可能会在用户调用之前更改 打开,所以建议直接打电话 打开 单独处理错误,如果失败,而不是调用 iswritable缧 首先。

注意目前此函数不能正确查询Windows上的文件系统Acl,因此它可能返回错误的结果。

兼容性

Julia1.11此功能至少需要Julia1.11。

iswritable(io) -> Bool

回来吧 错误 如果指定的IO对象不可写。

*例子*

julia> open("myfile.txt", "w") do io
           print(io, "Hello world!");
           iswritable(io)
       end
true

julia> open("myfile.txt", "r") do io
           iswritable(io)
       end
false

julia> rm("myfile.txt")
isreadable(path::String)

回来吧 真的 如果给定的访问权限 路径 允许当前用户阅读。

注意此权限可能会在用户调用之前更改 打开,所以建议直接打电话 打开 单独处理错误,如果失败,而不是调用 可读性 首先。

注意目前此函数不能正确查询Windows上的文件系统Acl,因此它可能返回错误的结果。

兼容性

Julia1.11此功能至少需要Julia1.11。

isreadable(io) -> Bool

回来吧 错误 如果指定的IO对象不可读。

*例子*

julia> open("myfile.txt", "w") do io
           print(io, "Hello world!");
           isreadable(io)
       end
false

julia> open("myfile.txt", "r") do io
           isreadable(io)
       end
true

julia> rm("myfile.txt")
isexecutable(path::String)

回来吧 真的 如果给定 路径 具有可执行权限。

注意此权限可能会在用户执行之前更改 路径,所以建议执行文件并在失败时处理错误,而不是调用 isexecutable的 首先。

请注意,在Julia1.6之前,它没有正确地询问Windows上的文件系统Acl,因此它将返回 真的 对于任何文件。 从Julia1.6开始,它正确地确定文件是否标记为可执行文件。

isopen(object) -> Bool

确定对象(如流或计时器)是否尚未关闭。 一旦一个对象被关闭,它就永远不会产生一个新的事件。 但是,由于封闭流可能仍然有数据在其缓冲区中读取,因此使用 eof,eof检查读取数据的能力。 使用 文件处理 当流可能是可写的或可读的时,要通知的包。

*例子*

julia> io = open("my_file.txt", "w+");

julia> isopen(io)
true

julia> close(io)

julia> isopen(io)
false
fd(x) -> RawFD

返回支持流、文件或套接字的文件描述符。 RawFD 对象可以通过 ccall 界面。

兼容性

Julia1.12在1.12之前,这个函数返回了一个 Int型 而不是一个 RawFD. 你可以使用 RawFD(fd(x)) 产生一个 RawFD 在所有Julia版本中。

兼容性

Julia1.12从Julia1.12开始支持获取套接字的文件描述符。

警告将返回的文件描述符复制为 Libc。dup()在将其传递给另一个将拥有它的系统(例如C库)之前。 否则,Julia对象都是 x 而另一个系统可能会尝试关闭文件描述符,这会导致错误。

警告套接字的文件描述符是异步的(即 O_NON阻止 在POSIX和 重叠的 在Windows上),它们的行为可能与常规文件描述符不同。

redirect_stdio(f; stdin=nothing, stderr=nothing, stdout=nothing)

重定向流的子集 标准普尔, 斯德尔, 标准输出,打电话 f() 并恢复每个流。

每个流的可能值是:

* 什么都没有 指示流不应重定向。 * 路径::AbstractString 将流重定向到 路径. * 伊俄 一个 [美]梦, TTY缧, 水管/水管、套接字或 德夫努尔.

*例子*

julia> redirect_stdio(stdout="stdout.txt", stderr="stderr.txt") do
           print("hello stdout")
           print(stderr, "hello stderr")
       end

julia> read("stdout.txt", String)
"hello stdout"

julia> read("stderr.txt", String)
"hello stderr"

*边缘案例*

可以将相同的参数传递给 标准输出斯德尔:

julia> redirect_stdio(stdout="log.txt", stderr="log.txt", stdin=devnull) do
    ...
end

但是不支持传递同一文件的两个不同的描述符。

julia> io1 = open("same/path", "w")

julia> io2 = open("same/path", "w")

julia> redirect_stdio(f, stdout=io1, stderr=io2) # not supported

此外, 标准普尔 参数可能不是与描述符相同的描述符 标准输出斯德尔.

julia> io = open(...)

julia> redirect_stdio(f, stdout=io, stdin=io) # not supported
兼容性

朱莉娅1.7 重定向_stdio 需要Julia1.7或更高版本。

redirect_stdio(;stdin=stdin, stderr=stderr, stdout=stdout)

重定向流的子集 标准普尔, 斯德尔, 标准输出. 每个参数必须是 [美]梦, TTY缧, 水管/水管、套接字或 德夫努尔.

兼容性

朱莉娅1.7 重定向_stdio 需要Julia1.7或更高版本。

redirect_stdout([stream]) -> stream

创建一个所有C和Julia级别的管道 标准输出输出将被重定向。 返回表示管道结束的流。 数据写入 标准输出现在可以从 研发 管的端部。

溪涧 必须是兼容的对象,例如 [美]梦, TTY缧, 水管/水管、套接字或 德夫努尔.

请参阅 重定向_stdio.

redirect_stdout(f::Function, stream)

运行函数 f 重定向时 标准输出溪涧. 完成后, 标准输出恢复到其先前的设置。

redirect_stderr([stream]) -> stream

redirect_stdout,但对于 斯德尔.

溪涧 必须是兼容的对象,例如 [美]梦, TTY缧, 水管/水管、套接字或 德夫努尔.

请参阅 重定向_stdio.

redirect_stderr(f::Function, stream)

运行函数 f 重定向时 斯德尔溪涧. 完成后, 斯德尔恢复到其先前的设置。

redirect_stdin([stream]) -> stream

redirect_stdout,但对于 标准普尔. 请注意,流的方向是相反的。

溪涧 必须是兼容的对象,例如 [美]梦, TTY缧, 水管/水管、套接字或 德夫努尔.

请参阅 重定向_stdio.

redirect_stdin(f::Function, stream)

运行函数 f 重定向时 标准普尔溪涧. 完成后, 标准普尔恢复到其先前的设置。

readchomp(x)

阅读全文 x 作为一个字符串,如果有一个,则删除单个尾随换行符。 相当于 chomp(读(x,字符串)).

*例子*

julia> write("my_file.txt", "JuliaLang is a GitHub organization.\nIt has many members.\n");

julia> readchomp("my_file.txt")
"JuliaLang is a GitHub organization.\nIt has many members."

julia> rm("my_file.txt");
truncate(file, n)

将第一个参数给出的文件或缓冲区的大小调整为精确 n 字节,如果文件或缓冲区增长,则用"\0"填充以前未分配的空间。

*例子*

julia> io = IOBuffer();

julia> write(io, "JuliaLang is a GitHub organization.")
35

julia> truncate(io, 15)
IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, append=false, size=15, maxsize=Inf, ptr=16, mark=-1)

julia> String(take!(io))
"JuliaLang is a "

julia> io = IOBuffer();

julia> write(io, "JuliaLang is a GitHub organization.");

julia> truncate(io, 40);

julia> String(take!(io))
"JuliaLang is a GitHub organization.\0\0\0\0\0"
skipchars(predicate, io::IO; linecomment=nothing)

推进溪流 伊俄 这样下一个读取的字符将是第一个剩余的字符。 谓词,谓词 申报表 错误. 如果关键字参数 线材,线材 被指定,从该字符到下一行开始的所有字符都被忽略。

*例子*

julia> buf = IOBuffer("    text")
IOBuffer(data=UInt8[...], readable=true, writable=false, seekable=true, append=false, size=8, maxsize=Inf, ptr=1, mark=-1)

julia> skipchars(isspace, buf)
IOBuffer(data=UInt8[...], readable=true, writable=false, seekable=true, append=false, size=8, maxsize=Inf, ptr=5, mark=-1)

julia> String(readavailable(buf))
"text"
countlines(io::IO; eol::AbstractChar = '\n')
countlines(filename::AbstractString; eol::AbstractChar = '\n')

讀! 伊俄 直到流/文件结束并计数行数。 要指定文件,请将文件名作为第一个参数传递。 EOL标记物以外 '\n' 通过将它们作为第二个参数传递来支持。 的最后一个非空行 伊俄 被计数,即使它不以EOL结束,匹配返回的长度 每行阅读线.

计数a的行 字符串, 计数线(iobuffer(str)) 可以使用。

*例子*

julia> io = IOBuffer("JuliaLang is a GitHub organization.\n");

julia> countlines(io)
1

julia> io = IOBuffer("JuliaLang is a GitHub organization.");

julia> countlines(io)
1

julia> eof(io) # counting lines moves the file pointer
true

julia> io = IOBuffer("JuliaLang is a GitHub organization.");

julia> countlines(io, eol = '.')
1
julia> write("my_file.txt", "JuliaLang is a GitHub organization.\n")
36

julia> countlines("my_file.txt")
1

julia> countlines("my_file.txt", eol = 'n')
4

julia> rm("my_file.txt")
PipeBuffer(data::AbstractVector{UInt8}=UInt8[]; maxsize::Integer = typemax(Int))

一个 IOBuffer的允许通过追加读取和执行写入。 不支持查找和截断。 见 IOBuffer的对于可用的构造函数。 如果 数据资料 给出,创建一个 管道缓冲器 对数据向量进行操作,可选地指定基础的大小 阵列 可能不会生长。

readavailable(stream)

从流中读取可用的缓冲数据。 仅当尚未缓冲任何数据时才执行实际I/O。 结果是一个 向量{UInt8}.

警告返回的数据量取决于实现;例如,它可以取决于缓冲区大小的内部选择。 其他功能,如 讀!一般应改为使用。

xref/# *`基地。IOContext`*-类型

IOContext

IOContext 提供一种机制,用于将输出配置设置传递到 xref:base/io-network。adoc#基。显示元组{IO,%20}[展览]方法。

简而言之,它是一个不可变的字典,它是 伊俄. 它支持标准的字典操作,如 xref:base/collections。adoc#基。getindex,getindex[getindex,getindex],并且还可以用作I/O流。

xref/# *`基地。IOContext`*-Method

IOContext(io::IO,KV::Pair...)

创建一个 IOContext 包装一个给定的流,添加指定的 键=>值 对该流的属性(请注意 伊俄 本身可以是一个 IOContext).

*使用 (键=>值)在io 要查看此特定组合是否在属性集中 *使用 get(io,key,default) 检索特定键的最新值

以下属性常用:

* :紧凑型:Boolean指定值应该更紧凑地打印,例如数字应该用更少的数字打印。 这是在打印数组元素时设置的。 :紧凑型 输出不应包含换行符。 * :限制:Boolean指定容器应该被截断,例如显示 代替大多数元素。 * :显示尺寸:A 元组{Int,Int} 给出用于文本输出的行和列的大小。 这可以用来复盖被调用函数的显示大小,但要获得屏幕的大小,请使用 显示尺寸 函数。 * :打字资讯:a 类型 表征关于将要显示的对象的类型的已经打印的信息。 这在显示相同类型的对象集合时主要有用,以便可以避免冗余类型信息(例如 [地板16(0)] 可以显示为"Float16[0.0]"而不是"Float16[Float16(0.0)]":在显示数组的元素时, :打字资讯 属性将设置为 漂浮物16). * :颜色:Boolean指定是否支持/期望ANSI颜色/转义码。 默认情况下,这取决于是否 伊俄 是一个兼容的终端,并由任何 --颜色 命令行标志时 朱莉娅 是发射的。

*例子*

julia>io=IOBuffer();

julia>printstyled(IOContext(io,:color=>true),"string",color=:red)

茱莉亚>字符串(拿!(io))
"\e[31m]\e[39m"

julia>printstyled(io,"string",color=:red)

茱莉亚>字符串(拿!(io))
"字符串"
julia>print(IOContext(stdout,:compact=>false),1.12341234)
1.12341234
julia>打印(iocontext(stdout,:compact=>true),1.12341234)
1.12341
julia>函数f(io::IO)
           如果get(io,:short,false)
               打印(io,"短")
           其他
               打印(io,"loooooong")
           结束
       结束
f(具有1方法的泛型函数)

朱莉娅>f(stdout)
[医]龙
julia>f(IOContext(stdout,:short=>true))
短

xref/# *`基地。IOContext`*-Method

IOContext(io::IO,context::IOContext)

创建一个 IOContext 这包装了一个备用 伊俄 但继承了 上下文环境.

注意,除非在包装中明确设置 伊俄显示尺寸伊俄 不会被继承。 这是因为默认情况下 显示尺寸 不是IO对象本身的属性,而是懒惰地推断出来的,因为终端窗口的大小可以在IO对象的生存期内改变。

文本I/O

show([io::IO = stdout], x)

编写值的文本表示形式 x 到输出流 伊俄. 新类型 T 应超载 显示(io::IO,x::T). 所使用的表示 展览 通常包括Julia特定的格式和类型信息,并且在可能的情况下应该是可分析的Julia代码。

repr代表返回 展览 作为字符串。

用于类型对象的更详细的人类可读文本输出 T,定义 显示(io::IO,::MIME"text/plain",::T) 此外。 检查 :紧凑型 IOContext键(经常检查为 get(io,:compact,false)::Bool)的 伊俄 在这样的方法中是推荐的,因为一些容器通过调用这个方法来显示它们的元素 :紧凑=>真.

请参阅 印刷业,其中写入未修饰的表示。

*例子*

julia> show("Hello World!")
"Hello World!"
julia> print("Hello World!")
Hello World!
summary(io::IO, x)
str = summary(x)

打印到流 伊俄,或返回字符串 斯特拉,给出一个值的简要描述。 默认返回 字符串(类型(x)),例如 Int64.

对于数组,返回一个大小和类型信息的字符串,例如 10元素向量{Int64}9×4×5阵列{Float64, 3}.

*例子*

julia> summary(1)
"Int64"

julia> summary(zeros(2))
"2-element Vector{Float64}"
print([io::IO], xs...)

写信给 伊俄 (或到默认输出流 标准输出如果 伊俄 未给出)一个规范的(未修饰的)文本表示。 所使用的表示 印刷业 包括最小的格式,并试图避免朱莉娅特定的细节。

印刷业 回到调用2参数 显示(io,x) 对于每个参数 xx,所以大多数类型应该只是定义 展览. 定义 印刷业 如果你的类型有一个单独的"普通"表示。 例如, 展览 显示带引号的字符串,以及 印刷业 显示不带引号的字符串。

请参阅 打印,打印, 字符串, [医印刷版].

*例子*

julia> print("Hello World!")
Hello World!
julia> io = IOBuffer();

julia> print(io, "Hello", ' ', :World!)

julia> String(take!(io))
"Hello World!"
println([io::IO], xs...)

打印(使用 印刷业) x伊俄 后面是一个换行符。 如果 伊俄 不提供,打印到默认输出流 标准输出.

请参阅 [医印刷版]添加颜色等。

*例子*

julia> println("Hello, world")
Hello, world

julia> io = IOBuffer();

julia> println(io, "Hello", ',', " world.")

julia> String(take!(io))
"Hello, world.\n"
printstyled([io], xs...; bold::Bool=false, italic::Bool=false, underline::Bool=false, blink::Bool=false, reverse::Bool=false, hidden::Bool=false, color::Union{Symbol,Int}=:normal)

印刷业 x 在指定为符号或整数的颜色中,可选用粗体。

关键字 颜色 可以取任何值 :正常, :斜体, :默认值, :粗体, :黑色, :眨眼, :蓝色, :青色, :绿色, :隐藏, :光黑, :光蓝, :光_cyan, :光绿色, :light_magenta, :光红, :光白, :光黄, :洋红色, :没有, :红色, :反向, :下划线, :白色,或 :黄色 或0到255之间的整数。 请注意,并非所有终端都支持256种颜色。

关键词 粗体=真, 斜体=真, 下划线=真, 眨眼=真 是不言自明的。 关键字 反向=真 交换前景色和背景色的印刷品,以及 隐藏=真 应该在终端中不可见,但仍然可以复制。 这些性质可以任意组合使用。

注意并非所有终端都支持斜体输出。 一些终端将斜体解释为反向或闪烁。

兼容性

Julia1.7关键字除外 颜色大胆的 在Julia1.7中添加。

兼容性

Julia1.10在Julia1.10中增加了对斜体输出的支持。

sprint(f::Function, args...; context=nothing, sizehint=0)

使用I/O流和提供的额外参数调用给定函数。 写入此I/O流的所有内容都作为字符串返回。 上下文环境 可以是一个 IOContext其属性将被使用,一个 指定属性及其值,或 指定多个属性及其值。 [医]大小 建议缓冲区的容量(以字节为单位)。

可选关键字参数 上下文环境 可以设置为一个 :键=>值 对,一个元组 :键=>值 对,或一个 伊俄IOContext对象,其属性用于传递到的I/O流 f. 可选项 [医]大小 为用于写入字符串的缓冲区分配的建议大小(以字节为单位)。

兼容性

Julia1.7将元组传递给关键字 上下文环境 需要Julia1.7或更高版本。

*例子*

julia> sprint(show, 66.66666; context=:compact => true)
"66.6667"

julia> sprint(showerror, BoundsError([1], 100))
"BoundsError: attempt to access 1-element Vector{Int64} at index [100]"
showerror(io, e)

显示异常对象的描述性表示 e. 此方法用于在调用 投掷.

*例子*

julia> struct MyException <: Exception
           msg::String
       end

julia> function Base.showerror(io::IO, err::MyException)
           print(io, "MyException: ")
           print(io, err.msg)
       end

julia> err = MyException("test exception")
MyException("test exception")

julia> sprint(showerror, err)
"MyException: test exception"

julia> throw(MyException("test exception"))
ERROR: MyException: test exception
dump(x; maxdepth=8)

显示值表示的每个部分。 输出的深度被截断在 最大深度.

*例子*

julia> struct MyStruct
           x
           y
       end

julia> x = MyStruct(1, (2,3));

julia> dump(x)
MyStruct
  x: Int64 1
  y: Tuple{Int64, Int64}
    1: Int64 2
    2: Int64 3

julia> dump(x; maxdepth = 1)
MyStruct
  x: Int64 1
  y: Tuple{Int64, Int64}
@dump expr

显示给定表达式的表示的每个部分。 相当于 转储(:(expr)).

readline(io::IO=stdin; keep::Bool=false)
readline(filename::AbstractString; keep::Bool=false)

从给定的I/O流或文件中读取一行文本(默认为 标准普尔). 从文件读取时,假定文本以UTF-8编码。 输入端的行与 '\n'"\r\n" 或一个输入流的结束。 何时 保持 是false(默认情况下是这样),这些尾随换行符在返回之前从行中删除。 何时 保持 是真的,它们作为行的一部分返回。

返回a 字符串. 请参阅 [医折线]改为就地写入另一个流(可以是预分配的 IOBuffer的).

请参阅 阅读,阅读用于阅读,直到更一般的分隔符。

*例子*

julia> write("my_file.txt", "JuliaLang is a GitHub organization.\nIt has many members.\n");

julia> readline("my_file.txt")
"JuliaLang is a GitHub organization."

julia>readline("my_file.txt",保持=true)
"JuliaLang是一个GitHub组织。\n"

julia>rm("my_file.txt")
julia> print("Enter your name: ")
Enter your name:

julia> your_name = readline()
Logan
"Logan"
readuntil(stream::IO, delim; keep::Bool = false)
readuntil(filename::AbstractString, delim; keep::Bool = false)

从I/O读取字符串 溪涧 或者一个文件,直到给定的分隔符。 分隔符可以是 UInt8, 摘要:、字符串或向量。 关键字参数 保持 控制分隔符是否包含在结果中。 假定文本以UTF-8编码。

返回a 字符串 如果 德利姆 是一个 摘要: 或字符串或以其他方式返回 向量资料{typeof(delim)}. 请参阅 复制,复制改为就地写入另一个流(可以是预分配的 IOBuffer的).

*例子*

julia> write("my_file.txt", "JuliaLang is a GitHub organization.\nIt has many members.\n");

julia> readuntil("my_file.txt", 'L')
"Julia"

julia> readuntil("my_file.txt", '.', keep = true)
"JuliaLang is a GitHub organization."

julia> rm("my_file.txt")
readlines(io::IO=stdin; keep::Bool=false)
readlines(filename::AbstractString; keep::Bool=false)

将I/O流或文件的所有行读取为字符串向量。 行为相当于保存读取的结果 读线重复使用相同的参数,并将生成的行保存为字符串的向量。 请参阅 每行遍历这些行而不一次全部读取它们。

*例子*

julia> write("my_file.txt", "JuliaLang is a GitHub organization.\nIt has many members.\n");

julia> readlines("my_file.txt")
2-element Vector{String}:
 "JuliaLang is a GitHub organization."
 "It has many members."

julia> readlines("my_file.txt", keep=true)
2-element Vector{String}:
 "JuliaLang is a GitHub organization.\n"
 "It has many members.\n"

julia> rm("my_file.txt")
eachline(io::IO=stdin; keep::Bool=false)
eachline(filename::AbstractString; keep::Bool=false)

创建一个可迭代的 每行 将从I/O流或文件产生每行的对象。 迭代调用 读线在流参数反复与 保持 通过,确定是否保留行尾字符。 当使用文件名调用时,文件在迭代开始时打开一次,并在结束时关闭。 如果迭代中断,文件将在 每行 对象进行垃圾回收。

遍历a的每一行 字符串, 每行(IOBuffer(str)) 可以使用。

迭代器。反向可用于 每行 对象以相反的顺序读取行(对于支持的文件、缓冲区和其他I/O流) 寻求),以及 第一个最后一次可分别用于提取初始线或最终线。

*例子*

julia> write("my_file.txt", "JuliaLang is a GitHub organization.\n It has many members.\n");

julia> for line in eachline("my_file.txt")
           print(line)
       end
JuliaLang is a GitHub organization. It has many members.

julia> rm("my_file.txt");
兼容性

Julia1.8Julia1.8需要使用 迭代器。反向最后一次每行 迭代器。

copyline(out::IO, io::IO=stdin; keep::Bool=false)
copyline(out::IO, filename::AbstractString; keep::Bool=false)

从I/O复制一行文本 溪涧 或文件到 流,返回 .

从文件读取时,假定文本以UTF-8编码。 输入端的行与 '\n'"\r\n" 或一个输入流的结束。 何时 保持 是false(默认情况下是这样),这些尾随换行符在返回之前会从行中删除。 何时 保持 是真的,它们作为行的一部分返回。

类似于 读线,其返回a 字符串;相比之下, [医]折线 直接写入 ,而不分配字符串。 (例如,这可以用于将数据读入预先分配的 IOBuffer的.)

请参阅 复制,复制用于阅读,直到更一般的分隔符。

*例子*

julia> write("my_file.txt", "JuliaLang is a GitHub organization.\nIt has many members.\n");

julia> String(take!(copyline(IOBuffer(), "my_file.txt")))
"JuliaLang is a GitHub organization."

julia> String(take!(copyline(IOBuffer(), "my_file.txt", keep=true)))
"JuliaLang is a GitHub organization.\n"

julia> rm("my_file.txt")
copyuntil(out::IO, stream::IO, delim; keep::Bool = false)
copyuntil(out::IO, filename::AbstractString, delim; keep::Bool = false)

从I/O复制字符串 溪涧 或者一个文件,直到给定的分隔符,到 流,返回 . 分隔符可以是 UInt8, 摘要:、字符串或向量。 关键字参数 保持 控制分隔符是否包含在结果中。 假定文本以UTF-8编码。

类似于 阅读,阅读,其返回a 字符串;相比之下, 复制,复制 直接写入 ,而不分配字符串。 (例如,这可以用于将数据读入预先分配的 IOBuffer的.)

*例子*

julia> write("my_file.txt", "JuliaLang is a GitHub organization.\nIt has many members.\n");

julia> String(take!(copyuntil(IOBuffer(), "my_file.txt", 'L')))
"Julia"

julia> String(take!(copyuntil(IOBuffer(), "my_file.txt", '.', keep = true)))
"JuliaLang is a GitHub organization."

julia> rm("my_file.txt")
displaysize([io::IO]) -> (lines, columns)

返回可能用于渲染输出的屏幕的标称大小 伊俄 对象。 如果未提供输入,则环境变量 线条 被阅读。 如果未设置,则默认大小为 (24, 80) 被退回。

*例子*

julia> withenv("LINES" => 30, "COLUMNS" => 100) do
           displaysize()
       end
(30, 100)

得到你的TTY尺寸,

julia> displaysize(stdout)
(34, 147)

多媒体I/O

正如文本输出是由执行 印刷业和用户定义的类型可以通过重载来表示它们的文本表示 展览,Julia为富多媒体输出(如图像,格式化文本,甚至音频和视频)提供了标准化机制,由三部分组成:

*一个函数 显示(x)请求Julia对象最丰富的可用多媒体显示 x (带有纯文本回退)。 *超载 展览允许指示用户定义类型的任意多媒体表示(由标准MIME类型键控)。 *支持多媒体的显示后端可以通过子类化泛型来注册 [医抽象游戏]键入并通过以下方式将它们推送到显示后端堆栈上 n.推手,推手.

基本Julia运行时仅提供纯文本显示,但可以通过加载外部模块或使用图形Julia环境(如基于IPython的IJulia笔记本)来启用更丰富的显示。

AbstractDisplay

富显示输出设备的抽象超类型。 文字游戏是this的一个子类型。

display(x)
display(d::AbstractDisplay, x)
display(mime, x)
display(d::AbstractDisplay, mime, x)

展览及展览 x 使用显示堆栈中最顶层的适用显示器,通常使用支持的最丰富的多媒体输出 x,以纯文本 标准输出输出作为回退。 该 显示(d,x) 变体尝试显示 x 在给定的显示器上 d 只是,扔了一个 方法;方法如果 d 无法显示此类型的对象。

一般来说,你不能假设 展览及展览 输出转到 标准输出 (不像 印刷(x)显示(x)). 例如, 显示(x) 可以打开一个单独的窗口与图像。 显示(x) 意思是"显示 x 以最好的方式,你可以为当前输出设备(s)。"如果你想要类似REPL的文本输出,保证去 标准输出,使用 显示(stdout,"text/plain",x)代替。

也有两个变种与一个 默剧 参数(MIME类型字符串,如 "图像/png"),试图显示 x 使用请求的MIME类型_only_,抛出一个 方法;方法 如果显示器或显示器不支持此类型 x. 使用这些变体,还可以通过传递来提供请求的MIME类型中的"原始"数据 X::抽象字符串 (对于具有基于文本的存储的MIME类型,例如text/html或application/postscript)或 x::向量{UInt8} (对于二进制MIME类型)。

要自定义类型实例的显示方式,请重载 展览而不是 展览及展览,如手册部分所述 定制漂亮印刷

redisplay(x)
redisplay(d::AbstractDisplay, x)
redisplay(mime, x)
redisplay(d::AbstractDisplay, mime, x)

默认情况下, 重新显示 函数简单调用 展览及展览. 但是,某些显示后端可能会复盖 重新显示 修改现有的 x (如果有的话)。 使用 重新显示 也是对后端的一个提示 x 可能被重新显示几次,并且后端可能选择延迟显示直到(例如)下一个交互提示。

displayable(mime) -> Bool
displayable(d::AbstractDisplay, mime) -> Bool

返回一个布尔值,指示是否给定 默剧 类型(字符串)可由当前显示堆栈中的任何显示器显示,或者具体地由显示器显示 d 在第二变型中。

show(io::IO, mime, x)

展览及展览函数最终调用 展览 为了写一个对象 x 作为给定的 默剧 键入给定的I/O流 伊俄 (通常是内存缓冲区),如果可能的话。 为了提供用户定义类型的丰富多媒体表示 T,只需要定义一个新的 展览 的方法 T,通过: show(io,::MIME"mime",x::T)=。..,在哪里 默剧 是一个MIME类型的字符串,函数体调用 (或类似的)写出 x伊俄. (请注意, 默剧"" 表示法只支持文字字符串;要构造 默剧 类型以更灵活的方式使用 默剧{Symbol("")}.)

例如,如果定义了 我的形象 键入并知道如何将其写入PNG文件,您可以定义一个函数 show(io,::MIME"image/png",x::MyImage)=。.. 允许您的图像显示在任何支持PNG的图像上 [医]抽象游戏 (如IJulia)。 像往常一样,一定要 进口基地。展览 为了给内置的Julia函数添加新的方法 展览.

从技术上讲, 默剧"默剧" 宏定义给定的单例类型 默剧 string,它允许我们利用Julia的调度机制来确定如何显示任何给定类型的对象。

默认的MIME类型是 MIME"text/plain". 有一个回退定义 文本/纯文本 调用的输出 展览 有2个参数,所以并不总是需要为这种情况添加一个方法。 如果一个类型受益于自定义的人类可读输出, show(::IO,::MIME"text/plain",::T) 应的定义。 例如, 类型用途 1天 作为输出的 文本/纯文本 MIME类型,以及 日(1) 作为2参数的输出 展览.

*例子*

julia> struct Day
           n::Int
       end

julia> Base.show(io::IO, ::MIME"text/plain", d::Day) = print(io, d.n, " day")

julia> Day(1)
1 day

容器类型通常实现3参数 展览 通过调用 show(io,MIME"text/plain"(),x) 对于元素 x,与 :紧凑=>真 设置在 IOContext作为第一个参数传递。

showable(mime, x)

返回一个布尔值,指示对象是否 x 可以写成给定的 默剧 类型。

(默认情况下,这是由相应的存在自动确定的 展览方法为 类型(x). 某些类型提供自定义 可展示的 方法;例如,如果可用的MIME格式取决于 x.)

*例子*

julia> showable(MIME("text/plain"), rand(5))
true

julia> showable("image/png", rand(5))
false
repr(mime, x; context=nothing)

返回 抽象字符串向量{UInt8} 包含的表示 x 在请求 默剧 类型,如写 显示(io,mime,x))(扔一个 xref:base/base.adoc#Core.MethodError[方法;方法如果没有适当的 展览 是可用的)。 一个 抽象字符串 为具有文本表示的MIME类型返回(例如 "文本/html""应用程序/后记"),而二进制数据返回为 向量{UInt8}. (功能 istextmime(mime) 返回Julia是否对待给定 默剧 键入为文本。)

可选关键字参数 上下文环境 可以设置为 :键=>值 对或一个 伊俄IOContext对象,其属性用于传递到的I/O流 展览.

作为特例,如果 x 是一个 抽象字符串 (对于文本MIME类型)或 向量{UInt8} (对于二进制MIME类型), repr代表 函数假定 x 已经在请求中了 默剧 格式和简单返回 x. 此特例不适用于 "文字/纯文字" MIME类型。 这是有用的,以便原始数据可以传递到 显示(m::MIME,x).

特别是, repr("文本/普通",x) 通常是一个"漂亮印刷"的版本。 x 为人类消费而设计。 请参阅 代表(x)改为返回一个与 显示(x)这可能更接近于 x 将进入朱莉娅。

*例子*

julia> A = [1 2; 3 4];

julia> repr("text/plain", A)
"2×2 Matrix{Int64}:\n 1  2\n 3  4"
MIME

表示标准internet数据格式的类型。 "MIME"代表"多用途互联网邮件扩展",因为该标准最初用于描述电子邮件的多媒体附件。

A 默剧 对象可以作为第二个参数传递给 展览请求以该格式输出。

*例子*

julia> show(stdout, MIME("text/plain"), "hi")
"hi"
@MIME_str

方便写作的宏 默剧类型,通常在将方法添加到 展览. 例如语法 show(io::IO,::MIME"text/html",x::MyType)=。.. 可用于定义如何编写 [医]类型.

如上所述,还可以定义新的显示后端。 例如,可以在窗口中显示PNG图像的模块可以向Julia注册此功能,以便调用 显示(x)在具有PNG表示的类型上,将使用模块的窗口自动显示图像。

为了定义一个新的显示后端,首先应该创建一个子类型 D 抽象类的 [医抽象游戏]. 然后,对于每个MIME类型(默剧 字符串),可以显示在 D,应该定义一个函数 display(d::D,::MIME"mime",x)=。.. 显示出来的 x 作为MIME类型,通常通过调用 显示(io,mime,x)repr(io,mime,x). A 方法;方法应抛出,如果 x 不能显示为该MIME类型;如果调用该类型,这是自动的 展览代表. 最后,我们应该定义一个函数 显示(d::D,x) 那个查询 可显示(mime,x)默剧 支持的类型 D 并显示"最好的"一个;一个 方法;方法 如果没有找到支持的MIME类型,则应抛出 x. 同样,某些子类型可能希望复盖 redisplay(d::D,...). (再次,应该 进口基地。展览及展览 将新方法添加到 展览及展览.)这些函数的返回值取决于实现(因为在某些情况下,返回某种类型的显示"句柄"可能很有用)。 显示功能 D 然后可以直接调用,但它们也可以从 xref:base/io-network.adoc#Base.Multimedia.display[显示(x) 只需将一个新的显示推送到显示后端堆栈上,:

pushdisplay(d::AbstractDisplay)

推送新显示器 d 在全局显示后端堆栈之上。 打电话来 显示(x)显示(mime,x) 将显示 x 在堆栈中最顶层的兼容后端(即,不抛出一个 方法;方法).

popdisplay()
popdisplay(d::AbstractDisplay)

弹出显示后端堆栈的最顶层后端,或 d 在第二变型中。

TextDisplay(io::IO)

返回a TextDisplay<:AbstractDisplay,它将任何对象显示为text/plain MIME类型(默认情况下),将文本表示形式写入给定的I/O流。 (这就是在Julia REPL中打印对象的方式。)

istextmime(m::MIME)

确定MIME类型是否为文本数据。 除了一组已知为文本数据(可能是Unicode)的类型外,MIME类型被假定为二进制数据。

*例子*

julia> istextmime(MIME("text/plain"))
true

julia> istextmime(MIME("image/png"))
false

网络I/O

bytesavailable(io)

返回在此流或缓冲区的读取将阻塞之前可用于读取的字节数。

*例子*

julia> io = IOBuffer("JuliaLang is a GitHub organization");

julia> bytesavailable(io)
34
ntoh(x)

将值的字节顺序(big-endian)转换为主机使用的字节顺序。

hton(x)

将主机使用的值的字节顺序转换为网络字节顺序(big-endian)。

ltoh(x)

将值的字节序从Little-endian转换为主机使用的字节序。

htol(x)

将主机使用的值的字节序转换为Little-endian。

ENDIAN_BOM

32位字节顺序标记指示主机的本机字节顺序。 Little-endian机器将包含值 0x04030201. 大端机器将包含值 0x01020304.