I/O and Network
General I/O
Base.stdout — Constantstdout::IO標準出力ストリームを参照するグローバル変数です。
Base.stderr — Constantstderr::IO標準エラーストリームを参照するグローバル変数です。
Base.stdin — Constantstdin::IO標準入力ストリームを参照するグローバル変数です。
Base.read — Methodread(filename::AbstractString)ファイルの全内容を Vector{UInt8} として読み込みます。
read(filename::AbstractString, String)ファイルの全内容を文字列として読み込みます。
read(filename::AbstractString, args...)ファイルを開いてその内容を読み込みます。args は read に渡されます:これは open(io->read(io, args...), filename) と同等です。
Base.write — Methodwrite(filename::AbstractString, content)contentの標準的なバイナリ表現をファイルに書き込みます。ファイルがまだ存在しない場合は作成され、存在する場合は上書きされます。
ファイルに書き込まれたバイト数を返します。
Base.open — Functionopen(f::Function, args...; kwargs...)関数 f を open(args...; kwargs...) の結果に適用し、完了後に結果のファイルディスクリプタを閉じます。
例
julia> write("myfile.txt", "Hello world!");
julia> open(io->read(io, String), "myfile.txt")
"Hello world!"
julia> rm("myfile.txt")open(filename::AbstractString; lock = true, keywords...) -> IOStreamファイルを5つのブールキーワード引数で指定されたモードで開きます:
| キーワード | 説明 | デフォルト |
|---|---|---|
read | 読み取り用に開く | !write |
write | 書き込み用に開く | truncate | append |
create | 存在しない場合は作成 | !read & write | truncate | append |
truncate | サイズをゼロに切り詰める | !read & write |
append | 終端にシーク | false |
キーワードが渡されない場合のデフォルトは、ファイルを読み取り専用で開くことです。開かれたファイルにアクセスするためのストリームを返します。
lockキーワード引数は、操作が安全なマルチスレッドアクセスのためにロックされるかどうかを制御します。
open(filename::AbstractString, [mode::AbstractString]; lock = true) -> IOStream文字列ベースのモード指定子を使用する代替構文で、5つのブール値の代わりに使用されます。modeの値はfopen(3)またはPerlのopenからのもので、以下のブールグループを設定することに相当します。
| モード | 説明 | キーワード |
|---|---|---|
r | 読み取り | なし |
w | 書き込み、作成、切り捨て | write = true |
a | 書き込み、作成、追加 | append = true |
r+ | 読み取り、書き込み | read = true, write = true |
w+ | 読み取り、書き込み、作成、切り捨て | truncate = true, read = true |
a+ | 読み取り、書き込み、作成、追加 | append = true, read = true |
lockキーワード引数は、操作が安全なマルチスレッドアクセスのためにロックされるかどうかを制御します。
例
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, "This file is read only")
ERROR: ArgumentError: write failed, IOStream is not writeable
[...]
julia> close(io)
julia> io = open("myfile.txt", "a");
julia> write(io, "This stream is not read only")
28
julia> close(io)
julia> rm("myfile.txt")open(fd::OS_HANDLE) -> IO生のファイルディスクリプタを取得し、Julia対応のIOタイプでラップし、fdハンドルの所有権を取得します。元のハンドルの所有権のキャプチャを避けるために、open(Libc.dup(fd))を呼び出します。
open(command, mode::AbstractString, stdio=devnull)commandを非同期で実行します。open(command, stdio; read, write)のように、キーワード引数の代わりにモード文字列を指定して読み取りおよび書き込みフラグを設定します。可能なモード文字列は次のとおりです:
| モード | 説明 | キーワード |
|---|---|---|
r | 読み取り | なし |
w | 書き込み | write = true |
r+ | 読み取り、書き込み | read = true, write = true |
w+ | 読み取り、書き込み | read = true, write = true |
open(command, stdio=devnull; write::Bool = false, read::Bool = !write)commandを非同期に実行し、process::IOオブジェクトを返します。readがtrueの場合、プロセスからの読み取りはプロセスの標準出力から行われ、stdioはオプションでプロセスの標準入力ストリームを指定します。writeがtrueの場合、書き込みはプロセスの標準入力に送られ、stdioはオプションでプロセスの標準出力ストリームを指定します。プロセスの標準エラーストリームは現在のグローバルstderrに接続されています。
open(f::Function, command, args...; kwargs...)open(command, args...; kwargs...)と似ていますが、結果のプロセスストリームでf(stream)を呼び出し、その後入力ストリームを閉じてプロセスの完了を待ちます。成功した場合はfが返す値を返します。プロセスが失敗した場合や、プロセスがstdoutに何かを印刷しようとした場合はエラーをスローします。
Base.IOStream — TypeIOStreamOSファイルディスクリプタをラップするバッファ付きIOストリーム。主にopenによって返されるファイルを表すために使用されます。
Base.IOBuffer — TypeIOBuffer([data::AbstractVector{UInt8}]; keywords...) -> IOBufferメモリ内のI/Oストリームを作成します。これは、既存の配列で操作することもできます。
オプションのキーワード引数を取ることができます:
read,write,append: 操作をバッファに制限します。詳細はopenを参照してください。truncate: バッファサイズをゼロ長に切り詰めます。maxsize: バッファが成長できないサイズを指定します。sizehint: バッファの容量を提案します(dataはsizehint!(data, size)を実装する必要があります)。
dataが指定されていない場合、バッファはデフォルトで読み取り可能かつ書き込み可能です。
例
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)))
0IOBuffer(string::String)与えられた文字列の基になるデータ上に読み取り専用の IOBuffer を作成します。
例
julia> io = IOBuffer("Haho");
julia> String(take!(io))
"Haho"
julia> String(take!(io))
"Haho"Base.take! — Methodtake!(b::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."Base.Pipe — TypePipe()未初期化の Pipe オブジェクトを構築します。これは、複数のプロセス間の IO 通信に特に適しています。
パイプの適切な端は、オブジェクトがプロセス生成に使用されると自動的に初期化されます。これは、プロセスパイプライン内で参照を簡単に取得するのに便利です。例えば:
julia> err = Pipe()
# この後、`err` は初期化され、`foo` の
# stderr を `err` パイプから読み取ることができるか、
# `err` を他のパイプラインに渡すことができます。
julia> run(pipeline(pipeline(`foo`, stderr=err), `cat`), wait=false)
# さて、パイプの書き込み半分を破棄して、
# 読み取り半分が EOF を受け取るようにします。
julia> closewrite(err)
julia> read(err, String)
"stderr messages"Base.link_pipe! も参照してください。
Base.link_pipe! — Functionlink_pipe!(pipe; reader_supports_async=false, writer_supports_async=false)pipeを初期化し、inエンドポイントをoutエンドポイントにリンクします。キーワード引数reader_supports_async/writer_supports_asyncは、WindowsのOVERLAPPEDおよびPOSIXシステムのO_NONBLOCKに対応します。外部プログラム(例:runで実行されたコマンドの出力)によって使用されない限り、trueであるべきです。
Base.fdio — Functionfdio([name::AbstractString, ]fd::Integer[, own::Bool=false]) -> IOStream整数ファイルディスクリプタからIOStreamオブジェクトを作成します。ownがtrueの場合、このオブジェクトを閉じると基になるディスクリプタも閉じられます。デフォルトでは、IOStreamはガーベジコレクションされると閉じられます。nameを使用すると、ディスクリプタを名前付きファイルに関連付けることができます。
Base.flush — Functionflush(stream)指定されたストリームに現在バッファリングされているすべての書き込みをコミットします。
Base.close — Functionclose(stream)I/Oストリームを閉じます。最初にflushを実行します。
Base.closewrite — Functionclosewrite(stream)フルデュプレックスI/Oストリームの書き込み半分をシャットダウンします。最初にflushを実行します。基盤となるファイルにデータがこれ以上書き込まれないことを他の端に通知します。これはすべてのIOタイプでサポートされているわけではありません。
実装されている場合、closewriteは、ブロックするはずの後続のreadまたはeof呼び出しが、代わりにEOFをスローするか、真を返すようにします。ストリームがすでに閉じている場合、これは冪等です。
例
julia> io = Base.BufferStream(); # これは決してブロックしないので、同じタスクで読み書きできます
julia> write(io, "request");
julia> # ここで`read(io)`を呼び出すと永遠にブロックされます
julia> closewrite(io);
julia> read(io, String)
"request"Base.write — Functionwrite(io::IO, x)指定されたI/Oストリームまたはファイルに値の標準的なバイナリ表現を書き込みます。ストリームに書き込まれたバイト数を返します。テキスト表現を書き込むには、printを参照してください(エンコーディングはioに依存する場合があります)。
書き込まれる値のエンディアンはホストシステムのエンディアンに依存します。プラットフォーム間で一貫した結果を得るために、書き込み/読み込み時に固定エンディアンに変換してください(例:htolおよびltohを使用)。
同じwrite呼び出しで複数の値を書くことができます。すなわち、以下は同等です:
write(io, x, y...)
write(io, x) + write(io, y...)例
一貫したシリアル化:
julia> fname = tempname(); # ランダムな一時ファイル名
julia> open(fname,"w") do f
# 64ビット整数をリトルエンディアンバイト順で書き込むことを確認
write(f,htol(Int64(42)))
end
8
julia> open(fname,"r") do f
# ホストバイト順とホスト整数型に戻す
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."writeメソッドを持たないユーザー定義のプレーンデータ型は、Refでラップすることで書き込むことができます:
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))Base.read — Functionread(io::IO, T)io から型 T の単一値を、標準的なバイナリ表現で読み込みます。
Julia はエンディアンを自動的に変換しないことに注意してください。この目的のために ntoh または ltoh を使用してください。
read(io::IO, String)io の全体を String として読み込みます(readchomp も参照)。
例
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(filename::AbstractString)ファイルの全内容を Vector{UInt8} として読み込みます。
read(filename::AbstractString, String)ファイルの全内容を文字列として読み込みます。
read(filename::AbstractString, args...)ファイルを開いてその内容を読み込みます。args は read に渡されます:これは open(io->read(io, args...), filename) と同等です。
read(s::IO, nb=typemax(Int))sから最大nbバイトを読み取り、読み取ったバイトのVector{UInt8}を返します。
read(s::IOStream, nb::Integer; all=true)sから最大nbバイトを読み取り、読み取ったバイトのVector{UInt8}を返します。
allがtrue(デフォルト)である場合、この関数はエラーまたはファイルの終わりが発生するまで、要求されたすべてのバイトを読み取るために繰り返しブロックします。allがfalseの場合、最大で1回のread呼び出しが行われ、返されるデータの量はデバイスに依存します。すべてのストリームタイプがallオプションをサポートしているわけではないことに注意してください。
read(command::Cmd)commandを実行し、結果の出力をバイトの配列として返します。
read(command::Cmd, String)commandを実行し、結果の出力をStringとして返します。
Base.read! — Functionread!(stream::IO, array::AbstractArray)
read!(filename::AbstractString, array::AbstractArray)I/Oストリームまたはファイルからバイナリデータを読み取り、arrayを埋めます。
Base.readbytes! — Functionreadbytes!(stream::IO, b::AbstractVector{UInt8}, nb=length(b))ストリームから最大 nb バイトを読み取り、b に格納し、読み取ったバイト数を返します。必要に応じて b のサイズは増加します(つまり、nb が length(b) より大きく、十分なバイトが読み取れた場合)、ただし減少することはありません。
readbytes!(stream::IOStream, b::AbstractVector{UInt8}, nb=length(b); all::Bool=true)ストリームから最大 nb バイトを b に読み込み、読み取ったバイト数を返します。必要に応じて b のサイズが増加します(つまり、nb が length(b) より大きく、十分なバイトが読み取れた場合)が、減少することはありません。
all が true(デフォルト)である場合、この関数はエラーまたはファイルの終わりが発生するまで、要求されたすべてのバイトを読み取るために繰り返しブロックします。all が false の場合、最大で1回の read 呼び出しが行われ、返されるデータの量はデバイスに依存します。すべてのストリームタイプが all オプションをサポートしているわけではないことに注意してください。
Base.unsafe_read — Functionunsafe_read(io::IO, ref, nbytes::UInt)IO ストリームオブジェクトから ref に nbytes をコピーします(ポインタに変換されます)。
サブタイプ T<:IO は、より効率的な実装を提供するために、次のメソッドシグネチャをオーバーライドすることを推奨します: unsafe_read(s::T, p::Ptr{UInt8}, n::UInt)
Base.unsafe_write — Functionunsafe_write(io::IO, ref, nbytes::UInt)ref(ポインタに変換された)からnbytesをIOオブジェクトにコピーします。
サブタイプT<:IOは、より効率的な実装を提供するために、次のメソッドシグネチャをオーバーライドすることを推奨します:unsafe_write(s::T, p::Ptr{UInt8}, n::UInt)
Base.readeach — Functionreadeach(io::IO, T)read(io, T) を返す反復可能なオブジェクトを生成します。
他にも skipchars、eachline、readuntil を参照してください。
例
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.Base.peek — Functionpeek(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)Base.position — Functionposition(l::Lexer)現在の位置を返します。
位置ストリームの現在の位置を取得します。
例
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)
35Base.seek — Functionseek(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)Base.seekstart — Functionseekstart(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)Base.seekend — Functionseekend(s)ストリームをその終わりに移動します。
Base.skip — Functionskip(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)Base.mark — FunctionBase.unmark — Functionunmark(s::IO)ストリーム s からマークを削除します。ストリームがマークされていた場合は true を返し、そうでない場合は false を返します。
Base.reset — Methodreset(s::IO)ストリーム s を以前にマークされた位置にリセットし、マークを削除します。以前にマークされた位置を返します。ストリームがマークされていない場合はエラーをスローします。
Base.ismarked — FunctionBase.eof — Functioneof(stream) -> BoolI/O ストリームがファイルの終わりに達しているかどうかをテストします。ストリームがまだ消耗していない場合、この関数は必要に応じてデータを待つためにブロックし、その後 false を返します。したがって、eof が false を返した後に1バイトを読み取ることは常に安全です。eof は、リモート接続の端が閉じられていても、バッファリングされたデータがまだ利用可能な限り false を返します。
例
julia> b = IOBuffer("my buffer");
julia> eof(b)
false
julia> seekend(b);
julia> eof(b)
trueBase.isreadonly — Functionisreadonly(io) -> Boolストリームが読み取り専用かどうかを判断します。
例
julia> io = IOBuffer("JuliaLang is a GitHub organization");
julia> isreadonly(io)
true
julia> io = IOBuffer();
julia> isreadonly(io)
falseBase.iswritable — Functioniswritable(path::String)指定された path のアクセス権が現在のユーザーによる書き込みを許可している場合は true を返します。
この権限はユーザーが open を呼び出す前に変更される可能性があるため、最初に iswritable を呼び出すのではなく、単に open を呼び出し、失敗した場合にエラーを処理することをお勧めします。
関連項目として ispath、isexecutable、isreadable を参照してください。
iswritable(io) -> Bool指定された IO オブジェクトが書き込み可能でない場合は false を返します。
例
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")Base.isreadable — Functionisreadable(path::String)与えられた path のアクセス権が現在のユーザーによる読み取りを許可している場合は true を返します。
この権限はユーザーが open を呼び出す前に変更される可能性があるため、最初に isreadable を呼び出すのではなく、単独で open を呼び出し、失敗した場合にエラーを処理することをお勧めします。
関連項目として ispath, isexecutable, iswritable を参照してください。
isreadable(io) -> Bool指定されたIOオブジェクトが読み取り可能でない場合はfalseを返します。
例
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")Base.isexecutable — Functionisexecutable(path::String)与えられた path に実行可能な権限がある場合は true を返します。
この権限はユーザーが path を実行する前に変更される可能性があるため、最初に isexecutable を呼び出すのではなく、ファイルを実行して失敗した場合にエラーを処理することをお勧めします。
Julia 1.6 より前は、Windows のファイルシステム ACL を正しく調査しなかったため、任意のファイルに対して true を返していました。Julia 1.6 以降は、ファイルが実行可能としてマークされているかどうかを正しく判断します。
関連情報として ispath、isreadable、iswritable を参照してください。
Base.isopen — Functionisopen(object) -> Boolオブジェクト(ストリームやタイマーなど)がまだ閉じられていないかどうかを判断します。一度オブジェクトが閉じられると、新しいイベントを生成することはありません。ただし、閉じられたストリームにはまだバッファに読み取るデータが残っている可能性があるため、データを読み取る能力を確認するにはeofを使用してください。ストリームが書き込み可能または読み取り可能になると通知を受けるには、FileWatchingパッケージを使用してください。
例
julia> io = open("my_file.txt", "w+");
julia> isopen(io)
true
julia> close(io)
julia> isopen(io)
falseBase.fd — Functionfd(stream)ストリームまたはファイルをバックアップするファイルディスクリプタを返します。この関数は、非同期ストリームではなく、同期的な File と IOStream のみに適用されることに注意してください。
Base.redirect_stdio — Functionredirect_stdio(;stdin=stdin, stderr=stderr, stdout=stdout)stdin、stderr、stdout のサブセットのストリームをリダイレクトします。各引数は IOStream、TTY、Pipe、ソケット、または devnull でなければなりません。
redirect_stdio(f; stdin=nothing, stderr=nothing, stdout=nothing)stdin、stderr、stdout のストリームのサブセットをリダイレクトし、f() を呼び出して各ストリームを復元します。
各ストリームの可能な値は次のとおりです:
nothingはストリームをリダイレクトしないことを示します。path::AbstractStringはストリームをpathのファイルにリダイレクトします。ioはIOStream、TTY、Pipe、ソケット、またはdevnullです。
例
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"エッジケース
stdout と stderr に同じ引数を渡すことが可能です:
julia> redirect_stdio(stdout="log.txt", stderr="log.txt", stdin=devnull) do
...
endただし、同じファイルの2つの異なるディスクリプタを渡すことはサポートされていません。
julia> io1 = open("same/path", "w")
julia> io2 = open("same/path", "w")
julia> redirect_stdio(f, stdout=io1, stderr=io2) # サポートされていませんまた、stdin 引数は stdout または stderr と同じディスクリプタであってはなりません。
julia> io = open(...)
julia> redirect_stdio(f, stdout=io, stdin=io) # サポートされていませんBase.redirect_stdout — Functionredirect_stdout([stream]) -> streamすべてのCおよびJuliaレベルのstdout出力がリダイレクトされるパイプを作成します。パイプの端を表すストリームを返します。stdoutに書き込まれたデータは、パイプのrd端から読み取ることができます。
streamは、IOStream、TTY、Pipe、ソケット、またはdevnullなどの互換性のあるオブジェクトでなければなりません。
詳細はredirect_stdioを参照してください。
Base.redirect_stdout — Methodredirect_stdout(f::Function, stream)関数 f を実行しながら stdout を stream にリダイレクトします。完了後、stdout は以前の設定に復元されます。
Base.redirect_stderr — Functionredirect_stderr([stream]) -> streamstderr のための redirect_stdout と同様です。
stream は、IOStream、TTY、Pipe、ソケット、または devnull のような互換性のあるオブジェクトでなければなりません。
他に redirect_stdio を参照してください。
Base.redirect_stderr — Methodredirect_stderr(f::Function, stream)関数 f を実行しながら stderr を stream にリダイレクトします。完了後、stderr は以前の設定に復元されます。
Base.redirect_stdin — Functionredirect_stdin([stream]) -> streamstdoutと同様ですが、stdin用です。ストリームの方向が逆になっていることに注意してください。
streamは、IOStream、TTY、Pipe、ソケット、またはdevnullなどの互換性のあるオブジェクトでなければなりません。
他にもredirect_stdioを参照してください。
Base.redirect_stdin — MethodBase.readchomp — Functionreadchomp(x)xの全体を文字列として読み込み、もしあれば末尾の改行を1つ削除します。chomp(read(x, String))と同等です。
例
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");Base.truncate — Functiontruncate(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"Base.skipchars — Functionskipchars(predicate, io::IO; linecomment=nothing)ストリーム io を進めて、次に読み取る文字が predicate が false を返す最初の残りの文字になるようにします。キーワード引数 linecomment が指定されている場合、その文字から次の行の開始までのすべての文字は無視されます。
例
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"Base.countlines — Functioncountlines(io::IO; eol::AbstractChar = '\n')
countlines(filename::AbstractString; eol::AbstractChar = '\n')ioのストリーム/ファイルの終わりまで読み取り、行数をカウントします。ファイルを指定するには、最初の引数としてファイル名を渡します。EOLマーカーは、第二引数として渡すことで'\n'以外のものもサポートされています。ioの最後の非空行は、EOLで終わっていなくてもカウントされ、eachlineおよびreadlinesによって返される長さと一致します。
Stringの行数をカウントするには、countlines(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) # 行をカウントするとファイルポインタが移動します
true
julia> io = IOBuffer("JuliaLang is a GitHub organization.");
julia> countlines(io, eol = '.')
1julia> 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")
Base.PipeBuffer — FunctionPipeBuffer(data::AbstractVector{UInt8}=UInt8[]; maxsize::Integer = typemax(Int))IOBuffer は、読み取りを許可し、追加によって書き込みを行うバッファです。シークや切り詰めはサポートされていません。利用可能なコンストラクタについては、IOBuffer を参照してください。data が指定されている場合、データベクター上で操作するための PipeBuffer を作成し、オプションで基盤となる Array が成長できないサイズを指定します。
Base.readavailable — Functionreadavailable(stream)ストリームから利用可能なバッファデータを読み取ります。実際のI/Oは、すでにデータがバッファリングされていない場合にのみ実行されます。結果は Vector{UInt8} です。
返されるデータの量は実装に依存します。たとえば、内部のバッファサイズの選択に依存することがあります。一般的には、read のような他の関数を使用するべきです。
Base.IOContext — TypeIOContextIOContextは、showメソッド間で出力設定を渡すためのメカニズムを提供します。
簡単に言うと、これはIOのサブクラスである不変の辞書です。標準の辞書操作(例えばgetindex)をサポートしており、I/Oストリームとしても使用できます。
Base.IOContext — MethodIOContext(io::IO, KV::Pair...)指定されたストリームをラップし、そのストリームのプロパティに指定された key=>value ペアを追加する IOContext を作成します(io 自体が IOContext であることもあります)。
(key => value) in ioを使用して、この特定の組み合わせがプロパティセットに含まれているかどうかを確認します。get(io, key, default)を使用して、特定のキーに対する最新の値を取得します。
以下のプロパティは一般的に使用されます:
:compact: 値がよりコンパクトに印刷されるべきかどうかを指定するブール値。例えば、数字が少ない桁数で印刷されるべきことを示します。これは配列要素を印刷する際に設定されます。:compact出力には改行が含まれてはいけません。:limit: コンテナが切り捨てられるべきかどうかを指定するブール値。例えば、ほとんどの要素の代わりに…を表示します。:displaysize: テキスト出力に使用する行と列のサイズを与えるTuple{Int,Int}。これは呼び出された関数の表示サイズをオーバーライドするために使用できますが、画面のサイズを取得するにはdisplaysize関数を使用します。:typeinfo: 表示されるオブジェクトの型に関してすでに印刷された情報を特徴づけるType。これは主に同じ型のオブジェクトのコレクションを表示する際に便利で、冗長な型情報を避けることができます(例えば、[Float16(0)]は "Float16[0.0]" として表示され、"Float16[Float16(0.0)]" とは表示されません:配列の要素を表示する際に、:typeinfoプロパティはFloat16に設定されます)。:color: ANSI カラー/エスケープコードがサポートされているか、期待されているかを指定するブール値。デフォルトでは、ioが互換性のある端末であるかどうかと、juliaが起動されたときの--colorコマンドラインフラグによって決まります。
例
julia> io = IOBuffer();
julia> printstyled(IOContext(io, :color => true), "string", color=:red)
julia> String(take!(io))
"\e[31mstring\e[39m"
julia> printstyled(io, "string", color=:red)
julia> String(take!(io))
"string"julia> print(IOContext(stdout, :compact => false), 1.12341234)
1.12341234
julia> print(IOContext(stdout, :compact => true), 1.12341234)
1.12341julia> function f(io::IO)
if get(io, :short, false)
print(io, "short")
else
print(io, "loooooong")
end
end
f (generic function with 1 method)
julia> f(stdout)
loooooong
julia> f(IOContext(stdout, :short => true))
shortBase.IOContext — MethodIOContext(io::IO, context::IOContext)contextのプロパティを継承しながら、代替のIOをラップするIOContextを作成します。
Text I/O
Base.show — Methodshow([io::IO = stdout], x)値 x のテキスト表現を出力ストリーム io に書き込みます。新しい型 T は show(io::IO, x::T) をオーバーロードする必要があります。show によって使用される表現は一般的にJulia特有のフォーマットと型情報を含み、可能な限り解析可能なJuliaコードであるべきです。
repr は show の出力を文字列として返します。
型 T のオブジェクトに対してより詳細な人間可読のテキスト出力を提供するには、show(io::IO, ::MIME"text/plain", ::T) を追加で定義します。このようなメソッドでは、io の :compact IOContext キー(通常は get(io, :compact, false)::Bool としてチェックされる)を確認することが推奨されます。なぜなら、一部のコンテナはこのメソッドを :compact => true で呼び出すことで要素を表示するからです。
また、装飾のない表現を書き込む print も参照してください。
例
julia> show("Hello World!")
"Hello World!"
julia> print("Hello World!")
Hello World!Base.summary — Functionsummary(io::IO, x)
str = summary(x)ストリーム io に出力するか、値の簡単な説明を与える文字列 str を返します。デフォルトでは string(typeof(x)) を返します。例えば、Int64 のように。
配列の場合、サイズと型情報の文字列を返します。例えば、10-element Array{Int64,1} のように。
例
julia> summary(1)
"Int64"
julia> summary(zeros(2))
"2-element Vector{Float64}"Base.print — Functionprint([io::IO], xs...)io に書き込みます(io が指定されていない場合はデフォルトの出力ストリーム stdout に書き込みます)。print で使用される表現は、最小限のフォーマットを含み、Julia 特有の詳細を避けるようにします。
print は show を呼び出すことにフォールバックするため、ほとんどの型は単に show を定義すればよいです。あなたの型に別の「プレーン」表現がある場合は print を定義してください。たとえば、show は文字列を引用符付きで表示し、print は引用符なしで文字列を表示します。
println、string、printstyled も参照してください。
例
julia> print("Hello World!")
Hello World!
julia> io = IOBuffer();
julia> print(io, "Hello", ' ', :World!)
julia> String(take!(io))
"Hello World!"Base.println — Functionprintln([io::IO], xs...)xsをioに改行付きで印刷します(printを使用)。ioが指定されていない場合は、デフォルトの出力ストリームstdoutに印刷します。
色などを追加するには、printstyledも参照してください。
例
julia> println("Hello, world")
Hello, world
julia> io = IOBuffer();
julia> println(io, "Hello", ',', " world.")
julia> String(take!(io))
"Hello, world.\n"Base.printstyled — Functionprintstyled([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)xsをシンボルまたは整数で指定された色で印刷し、オプションで太字にします。
キーワードcolorは、:normal、:italic、:default、:bold、:black、:blink、:blue、:cyan、:green、:hidden、:light_black、:light_blue、:light_cyan、:light_green、:light_magenta、:light_red、:light_white、:light_yellow、:magenta、:nothing、:red、:reverse、:underline、:white、または:yellow、または0から255の間の整数を取ることができます。すべての端末が256色をサポートしているわけではないことに注意してください。
キーワードbold=true、italic=true、underline=true、blink=trueは自己説明的です。キーワードreverse=trueは前景と背景の色を交換して印刷し、hidden=trueは端末では見えないはずですが、コピーすることはできます。これらのプロパティは任意の組み合わせで使用できます。
Base.sprint — Functionsprint(f::Function, args...; context=nothing, sizehint=0)指定された関数をI/Oストリームと供給された追加引数で呼び出します。このI/Oストリームに書き込まれたすべての内容は文字列として返されます。contextは、使用されるプロパティを持つIOContextであるか、プロパティとその値を指定するPair、または複数のプロパティとその値を指定するPairのタプルであることができます。sizehintはバッファの容量(バイト単位)を示唆します。
オプションのキーワード引数contextは、:key=>valueペア、:key=>valueペアのタプル、またはfに渡されるI/Oストリームに使用される属性を持つIOまたはIOContextオブジェクトに設定できます。オプションのsizehintは、文字列を書き込むために使用されるバッファに割り当てることを推奨するサイズ(バイト単位)です。
例
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]"Base.showerror — Functionshowerror(io, e)例外オブジェクト e の説明的な表現を表示します。このメソッドは、throw の呼び出し後に例外を表示するために使用されます。
例
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 exceptionBase.dump — Functiondump(x; maxdepth=8)値の表現のすべての部分を表示します。出力の深さは maxdepth で切り捨てられます。
例
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}Base.Meta.@dump — Macro@dump expr与えられた式の表現のすべての部分を表示します。 dump(:(expr)) と同等です。
Base.readline — Functionreadline(io::IO=stdin; keep::Bool=false)
readline(filename::AbstractString; keep::Bool=false)指定されたI/Oストリームまたはファイルから1行のテキストを読み取ります(デフォルトはstdin)。ファイルから読み取る場合、テキストはUTF-8でエンコードされていると仮定されます。入力の行は'\n'または"\r\n"または入力ストリームの終わりで終了します。keepがfalse(デフォルトではfalse)である場合、これらの末尾の改行文字は返される前に行から削除されます。keepがtrueである場合、それらは行の一部として返されます。
Stringを返します。別のストリームにインプレースで書き込むには、copylineも参照してください(これは事前に割り当てられたIOBufferである可能性があります)。
より一般的な区切り文字まで読み取るには、readuntilも参照してください。
例
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", keep=true)
"JuliaLang is a GitHub organization.\n"
julia> rm("my_file.txt")julia> print("Enter your name: ")
Enter your name:
julia> your_name = readline()
Logan
"Logan"Base.readuntil — Functionreaduntil(stream::IO, delim; keep::Bool = false)
readuntil(filename::AbstractString, delim; keep::Bool = false)I/O stream またはファイルから、指定された区切り文字までの文字列を読み取ります。区切り文字は UInt8、AbstractChar、文字列、またはベクターであることができます。キーワード引数 keep は、区切り文字が結果に含まれるかどうかを制御します。テキストは UTF-8 でエンコードされていると仮定されます。
delim が AbstractChar または文字列の場合は String を返し、それ以外の場合は Vector{typeof(delim)} を返します。代わりに別のストリームにインプレースで書き込むには copyuntil を参照してください(これは事前に割り当てられた 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")Base.readlines — Functionreadlines(io::IO=stdin; keep::Bool=false)
readlines(filename::AbstractString; keep::Bool=false)I/O ストリームまたはファイルのすべての行を文字列のベクターとして読み取ります。動作は、同じ引数で readline を繰り返し読み取った結果を保存し、その結果の行を文字列のベクターとして保存することと同等です。すべての行を一度に読み取ることなく、行を反復処理するには eachline も参照してください。
例
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")Base.eachline — Functioneachline(io::IO=stdin; keep::Bool=false)
eachline(filename::AbstractString; keep::Bool=false)I/O ストリームまたはファイルから各行を生成する iterable EachLine オブジェクトを作成します。反復処理は、ストリーム引数に対して readline を繰り返し呼び出し、keep を渡して、末尾の改行文字が保持されるかどうかを決定します。ファイル名で呼び出された場合、反復の最初にファイルが一度開かれ、最後に閉じられます。反復が中断された場合、EachLine オブジェクトがガーベジコレクションされるときにファイルは閉じられます。
String の各行を反復処理するには、eachline(IOBuffer(str)) を使用できます。
Iterators.reverse は、EachLine オブジェクトに対して逆順で行を読み取るために使用でき(ファイル、バッファ、および seek をサポートする他の I/O ストリームに対して)、first または last を使用して、それぞれ最初または最後の行を抽出できます。
例
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");Base.copyline — Functioncopyline(out::IO, io::IO=stdin; keep::Bool=false)
copyline(out::IO, filename::AbstractString; keep::Bool=false)I/O ストリーム またはファイルから out ストリームにテキストの1行をコピーし、out を返します。
ファイルから読み取る場合、テキストはUTF-8でエンコードされていると仮定されます。入力の行は '\n' または "\r\n" または入力ストリームの終わりで終了します。keep が false の場合(デフォルトではそうです)、これらの末尾の改行文字は返される前に行から削除されます。keep が true の場合、それらは行の一部として返されます。
readline に似ていますが、String を返すのに対し、copyline は文字列を割り当てることなく直接 out に書き込みます。(これは、例えば、事前に割り当てられた IOBuffer にデータを読み込むために使用できます。)
より一般的な区切り文字まで読み取るための copyuntil も参照してください。
例
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")Base.copyuntil — Functioncopyuntil(out::IO, stream::IO, delim; keep::Bool = false)
copyuntil(out::IO, filename::AbstractString, delim; keep::Bool = false)I/O stream またはファイルから、指定された区切り文字までの文字列を out ストリームにコピーし、out を返します。区切り文字は UInt8、AbstractChar、文字列、またはベクターであることができます。キーワード引数 keep は、区切り文字が結果に含まれるかどうかを制御します。テキストは UTF-8 でエンコードされていると仮定されます。
readuntil に似ていますが、copyuntil は文字列を割り当てることなく、直接 out に書き込みます。(これは、例えば、事前に割り当てられた 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")Base.displaysize — Functiondisplaysize([io::IO]) -> (lines, columns)この IO オブジェクトに出力をレンダリングするために使用できる画面の名目サイズを返します。入力が提供されていない場合、環境変数 LINES と COLUMNS が読み取られます。それらが設定されていない場合、デフォルトサイズ (24, 80) が返されます。
例
julia> withenv("LINES" => 30, "COLUMNS" => 100) do
displaysize()
end
(30, 100)TTYサイズを取得するには、
julia> displaysize(stdout)
(34, 147)Multimedia I/O
ちょうどテキスト出力が print によって行われ、ユーザー定義型が show をオーバーロードすることでそのテキスト表現を示すことができるように、Juliaはリッチなマルチメディア出力(画像、フォーマットされたテキスト、さらには音声や動画など)のための標準化されたメカニズムを提供しており、これには3つの部分が含まれています:
- 関数
display(x)は、Juliaオブジェクトxの最もリッチなマルチメディア表示を要求するためのものであり、プレーンテキストのフォールバックも提供します。 showのオーバーロードにより、ユーザー定義型の任意のマルチメディア表現(標準MIMEタイプでキー付けされた)を示すことができます。- マルチメディア対応のディスプレイバックエンドは、一般的な
AbstractDisplayタイプをサブクラス化することで登録でき、pushdisplayを介してディスプレイバックエンドのスタックにプッシュすることができます。
ベースのJuliaランタイムはプレーンテキストの表示のみを提供しますが、外部モジュールをロードするか、グラフィカルなJulia環境(IPythonベースのIJuliaノートブックなど)を使用することで、よりリッチな表示を有効にすることができます。
Base.Multimedia.AbstractDisplay — TypeAbstractDisplayリッチな表示出力デバイスのための抽象スーパタイプです。 TextDisplay はこれのサブタイプです。
Base.Multimedia.display — Functiondisplay(x)
display(d::AbstractDisplay, x)
display(mime, x)
display(d::AbstractDisplay, mime, x)xを表示スタックの最上位の適用可能な表示を使用して表示します。通常、xに対してサポートされている最もリッチなマルチメディア出力を使用し、プレーンテキストstdout出力をフォールバックとして使用します。display(d, x)のバリアントは、指定された表示dのみにxを表示しようとし、dがこのタイプのオブジェクトを表示できない場合はMethodErrorをスローします。
一般に、displayの出力がstdoutに送られるとは限りません(print(x)やshow(x)とは異なります)。たとえば、display(x)は画像を表示するために別のウィンドウを開くことがあります。display(x)は「現在の出力デバイスに対して最良の方法でxを表示する」という意味です。stdoutに確実に送られるREPLのようなテキスト出力が必要な場合は、代わりにshow(stdout, "text/plain", x)を使用してください。
mime引数("image/png"のようなMIMEタイプ文字列)を持つ2つのバリアントもあり、要求されたMIMEタイプのみを使用してxを表示しようとし、このタイプが表示またはxによってサポートされていない場合はMethodErrorをスローします。これらのバリアントを使用すると、x::AbstractString(text/htmlやapplication/postscriptなどのテキストベースのストレージを持つMIMEタイプの場合)またはx::Vector{UInt8}(バイナリMIMEタイプの場合)を渡すことで、要求されたMIMEタイプで「生」のデータを提供することもできます。
型のインスタンスがどのように表示されるかをカスタマイズするには、showをオーバーロードし、displayではなく、カスタムプリティプリンティングに関するマニュアルのセクションで説明されているようにしてください。
Base.Multimedia.redisplay — Functionredisplay(x)
redisplay(d::AbstractDisplay, x)
redisplay(mime, x)
redisplay(d::AbstractDisplay, mime, x)デフォルトでは、redisplay 関数は単に display を呼び出します。しかし、一部の表示バックエンドは、既存の x の表示を変更するために redisplay をオーバーライドする場合があります(もしあれば)。redisplay を使用することは、バックエンドに対して x が何度も再表示される可能性があることを示すヒントでもあり、バックエンドは(例えば)次の対話型プロンプトまで表示を遅延させることを選択するかもしれません。
Base.Multimedia.displayable — Functiondisplayable(mime) -> Bool
displayable(d::AbstractDisplay, mime) -> Bool与えられた mime タイプ(文字列)が現在の表示スタック内のいずれかのディスプレイによって表示可能か、または2番目のバリアントで特にディスプレイ d によって表示可能かを示すブール値を返します。
Base.show — Methodshow(io::IO, mime, x)display 関数は最終的に show を呼び出して、オブジェクト x を指定された mime タイプで指定された I/O ストリーム io(通常はメモリバッファ)に書き込みます。ユーザー定義型 T のリッチなマルチメディア表現を提供するためには、T に対して新しい show メソッドを定義するだけで済みます。具体的には、show(io, ::MIME"mime", x::T) = ... のように定義します。ここで mime は MIME タイプの文字列で、関数本体は write(または類似のもの)を呼び出して x のその表現を io に書き込みます。(MIME"" 表記はリテラル文字列のみをサポートすることに注意してください。より柔軟に MIME タイプを構築するには MIME{Symbol("")} を使用します。)
例えば、MyImage 型を定義し、それを PNG ファイルに書き込む方法を知っている場合、show(io, ::MIME"image/png", x::MyImage) = ... という関数を定義して、あなたの画像が PNG 対応の AbstractDisplay(IJulia など)で表示されるようにすることができます。いつものように、組み込みの Julia 関数 show に新しいメソッドを追加するために import Base.show を忘れないでください。
技術的には、MIME"mime" マクロは指定された mime 文字列のためのシングルトン型を定義し、これにより任意の型のオブジェクトを表示する方法を決定する際に Julia のディスパッチメカニズムを利用することができます。
デフォルトの MIME タイプは MIME"text/plain" です。text/plain 出力のためのフォールバック定義があり、2 引数で show を呼び出すため、その場合にメソッドを追加する必要は常にあるわけではありません。ただし、型がカスタムの人間可読出力から利益を得る場合、show(::IO, ::MIME"text/plain", ::T) を定義するべきです。例えば、Day 型は text/plain MIME タイプの出力として 1 day を使用し、2 引数の show の出力として Day(1) を使用します。
例
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コンテナ型は一般的に、要素 x に対して show(io, MIME"text/plain"(), x) を呼び出すことで 3 引数の show を実装し、最初の引数として渡される IOContext で :compact => true が設定されます。
Base.Multimedia.showable — Functionshowable(mime, x)オブジェクト x が指定された mime タイプとして書き込むことができるかどうかを示すブール値を返します。
(デフォルトでは、これは typeof(x) に対する対応する show メソッドの存在によって自動的に決定されます。一部の型はカスタム showable メソッドを提供します。たとえば、利用可能なMIMEフォーマットが x の値に依存する場合です。)
例
julia> showable(MIME("text/plain"), rand(5))
true
julia> showable("image/png", rand(5))
falseBase.repr — Methodrepr(mime, x; context=nothing)指定された mime タイプでの x の表現を含む AbstractString または Vector{UInt8} を返します。これは show(io, mime, x) によって書かれたものであり、適切な show が利用できない場合は MethodError をスローします。テキスト表現を持つ MIME タイプ(例えば "text/html" や "application/postscript")の場合は AbstractString が返され、バイナリデータは Vector{UInt8} として返されます。(関数 istextmime(mime) は、Julia が特定の mime タイプをテキストとして扱うかどうかを返します。)
オプションのキーワード引数 context は、key=>value ペアまたは IO または IOContext オブジェクトに設定でき、その属性は show に渡される I/O ストリームに使用されます。
特別なケースとして、x が AbstractString(テキスト MIME タイプ用)または Vector{UInt8}(バイナリ MIME タイプ用)の場合、repr 関数は x がすでに要求された mime 形式であると仮定し、単に x を返します。この特別なケースは "text/plain" MIME タイプには適用されません。これは、生データを display(m::MIME, x) に渡すために便利です。
特に、repr("text/plain", x) は通常、人的消費のために設計された x の「整形された」バージョンです。代わりに show(x) に対応する文字列を返す repr(x) も参照してください。これは、x の値が Julia にどのように入力されるかに近いかもしれません。
例
julia> A = [1 2; 3 4];
julia> repr("text/plain", A)
"2×2 Matrix{Int64}:\n 1 2\n 3 4"Base.Multimedia.MIME — TypeMIME標準的なインターネットデータ形式を表す型です。"MIME"は"Multipurpose Internet Mail Extensions"の略で、標準は元々電子メールメッセージへのマルチメディア添付ファイルを説明するために使用されていました。
MIMEオブジェクトは、showに対して2番目の引数として渡すことで、その形式での出力を要求できます。
例
julia> show(stdout, MIME("text/plain"), "hi")
"hi"Base.Multimedia.@MIME_str — Macro@MIME_strMIME タイプを書くための便利なマクロで、通常は show にメソッドを追加する際に使用されます。例えば、構文 show(io::IO, ::MIME"text/html", x::MyType) = ... を使用して、MyType の HTML 表現の書き方を定義することができます。
上記のように、新しい表示バックエンドを定義することもできます。たとえば、ウィンドウにPNG画像を表示できるモジュールは、この機能をJuliaに登録することができるため、PNG表現を持つ型に対してdisplay(x)を呼び出すと、自動的にモジュールのウィンドウを使用して画像が表示されます。
新しいディスプレイバックエンドを定義するには、まず抽象クラス AbstractDisplay のサブタイプ D を作成する必要があります。次に、D で表示できる各 MIME タイプ(mime 文字列)について、display(d::D, ::MIME"mime", x) = ... という関数を定義し、通常は show(io, mime, x) または repr(io, mime, x) を呼び出すことで、x をその MIME タイプとして表示します。x がその MIME タイプとして表示できない場合は、MethodError をスローする必要があります。これは、show または repr を呼び出すと自動的に行われます。最後に、display(d::D, x) という関数を定義し、D がサポートする mime タイプを showable(mime, x) に問い合わせて、"最適な" タイプを表示します。x に対してサポートされている MIME タイプが見つからない場合は、MethodError をスローする必要があります。同様に、一部のサブタイプは redisplay(d::D, ...) をオーバーライドしたい場合があります。(再度、import Base.display を使用して display に新しいメソッドを追加する必要があります。)これらの関数の戻り値は実装に依存します(場合によっては、何らかのタイプのディスプレイ "ハンドル" を返すことが有用な場合があります)。その後、D のディスプレイ関数は直接呼び出すことができますが、ディスプレイバックエンドスタックに新しいディスプレイをプッシュすることで、display(x) から自動的に呼び出すこともできます。
Base.Multimedia.pushdisplay — Functionpushdisplay(d::AbstractDisplay)新しいディスプレイ d をグローバルディスプレイバックエンドスタックの上にプッシュします。 display(x) または display(mime, x) を呼び出すと、スタック内の最上位の互換性のあるバックエンド(すなわち、MethodError をスローしない最上位のバックエンド)で x が表示されます。
Base.Multimedia.popdisplay — Functionpopdisplay()
popdisplay(d::AbstractDisplay)ディスプレイバックエンドスタックから最上位のバックエンドをポップするか、2番目のバリアントで d の最上位のコピーをポップします。
Base.Multimedia.TextDisplay — TypeTextDisplay(io::IO)TextDisplay <: AbstractDisplay を返し、任意のオブジェクトをテキスト/プレーン MIME タイプとして表示し(デフォルト)、テキスト表現を指定された I/O ストリームに書き込みます。(これが Julia REPL でオブジェクトが印刷される方法です。)
Base.Multimedia.istextmime — Functionistextmime(m::MIME)MIMEタイプがテキストデータであるかどうかを判断します。MIMEタイプは、テキストデータとして知られている一部のタイプを除いて、バイナリデータであると見なされます(おそらくUnicode)。
例
julia> istextmime(MIME("text/plain"))
true
julia> istextmime(MIME("image/png"))
falseNetwork I/O
Base.bytesavailable — Functionbytesavailable(io)このストリームまたはバッファからの読み取りがブロックされる前に、読み取りのために利用可能なバイト数を返します。
例
julia> io = IOBuffer("JuliaLang is a GitHub organization");
julia> bytesavailable(io)
34Base.ntoh — Functionntoh(x)値のエンディアンをネットワークバイトオーダー(ビッグエンディアン)からホストが使用するものに変換します。
Base.hton — Functionhton(x)ホストが使用するエンディアンからネットワークバイトオーダー(ビッグエンディアン)に値のエンディアンを変換します。
Base.ltoh — Functionltoh(x)値のエンディアンをリトルエンディアンからホストで使用されるものに変換します。
Base.htol — Functionhtol(x)ホストで使用されているエンディアンからリトルエンディアンに値のエンディアンを変換します。
Base.ENDIAN_BOM — ConstantENDIAN_BOM32ビットバイトオーダーマークは、ホストマシンのネイティブバイトオーダーを示します。リトルエンディアンのマシンは値 0x04030201 を含みます。ビッグエンディアンのマシンは値 0x01020304 を含みます。