TextInputStream (クラス)
public abstract shared TextInputStream {inherits {BufferedInputStream-of char}}
パッケージ: CURL.IO.STREAM
直接継承しているサブクラス: DefaultTextInputStream, NewlineFilterTextInputStream, TranscodingTextInputStream, SeekableTextInputStream, HttpTextInputStream

行にグループ化される文字の InputStream


プロパティ
character-encoding:読み込まれているバイトの現在の文字エンコーディングです。バイトを文字コードに変換する方法を定義します。
アクセサ public TextInputStream.character-encoding:CharEncoding
プロパティ 継承 BufferedInputStream-of: read-buffer-data-size, read-buffer-empty?, read-buffer-size
プロパティ 継承 PeekableInputStream-of: end-of-stream?
プロパティ 継承 Stream-of: non-blocking-supported?, open?, origin-url
プロパティ 継承 GenericInputStream: when-last-modified

メソッド
async-read-string:Url から非同期に文字列を読み込みます。
public {TextInputStream.async-read-string
buf:#StringBuf = null,
n:int64 = max-int64,
max-chunk-size:int = 8192,
partial?:bool = false,
append?:bool = false,
event-handler:EventHandler,
...:EventHandler
}:AsyncStreamReader
read-line:self から 1 行の文字列を読み込みます。
public {TextInputStream.read-line
buf:#StringBuf = null,
newline-sequence:NewlineSequence = NewlineSequence.all
}:#StringBuf
read-lines:self から 最大 n 個の end-of-line-sequence-terminated String を (end-of-line も含めて) 取得し、outstart で指定されたスロット位置から配置します。
public {TextInputStream.read-lines
out:#{Array-of StringBuf} = null,
start:int = 0,
n:int = max-int - start,
eol-sequence:#String = null
}:(lines:{Array-of StringBuf}, n-lines:int)
read-one-line:self から 1 行の文字列を読み込みます。
public {TextInputStream.read-one-line
buf:#StringBuf = null,
append?:bool = false,
eol-sequence:#String = null
}:(buf:StringBuf, n:int)
read-one-string:指定された文字数の文字列を self から取得します。
public {TextInputStream.read-one-string
buf:#StringBuf = null,
append?:bool = false,
n:int = {if append? and buf != null then max-int - buf.size else max-int }
}:(buf:StringBuf, n:int)
メソッド 継承 BufferedInputStream-of: peek-one, peek-one-any, unread-one, unread-one-any
メソッド 継承 InputStream-of: async-read, close, copy-out, read, read-anys, read-one, read-one-any, to-Iterator
メソッド 継承 Stream-of: verify-open
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize




プロパティ詳細
character-encoding (アクセサ)
アクセサ public TextInputStream.character-encoding:CharEncoding

読み込まれているバイトの現在の文字エンコーディングです。バイトを文字コードに変換する方法を定義します。

注意事項

元になるバイト列が実際に存在しない一部の TextInputStream では無意味になります。





メソッド詳細
async-read-string (メソッド)
public {TextInputStream.async-read-string
buf:#StringBuf = null,
n:int64 = max-int64,
max-chunk-size:int = 8192,
partial?:bool = false,
append?:bool = false,
event-handler:EventHandler,
...:EventHandler
}:AsyncStreamReader

Url から非同期に文字列を読み込みます。

プログラミング注意事項

ストリームからデータを読み込み、AsyncStreamReadEvent イベントに登録されている任意のイベントハンドラを呼び出します。
buf: StringBuf キーワード 。作成される AsyncStreamReadEvent で使用および再利用されます。
n: 読み込む最大量を示す int64 キーワード。既定値は max-int64 で、ストリームの最後まで読み込みます。
max-chunk-size: 一度に読み込む最大量、および AsyncStreamReadEvent に提供する新しいデータ量の最大サイズを示す int キーワード。既定値は 8192 です。
partial?: n 個のアイテムが読み込まれる前、またはストリームの最後に達する前に AsyncStreamReadEvent を送信するかどうかを示す bool キーワード。つまり、読み込まれるチャンクごとにイベントを送信するかどうか、append?true の場合にチャンクごとにファイル関連イベントを送信するかどうかどうかを指定することにもなります。既定値は false です。
append?: AsyncStreamReadEvent のいずれかが新規のデータだけを受け取るか、それまでに読み込まれた全データの継続バッファを受け取るかを示す bool キーワード。さらに、buf が指定されている場合は、これに追加するかまたはクリアしてから使用するかを示します。既定値は false です。
event-handler: AsyncStreamReadEvent を受け取る EventHandler。少なくとも 1 つを指定する必要があります。
...: AsyncStreamReadEvent を必須引数とする EventHandler を複数記述できます。

戻り値

非同期読み込みを制御するための AsyncStreamReader

注意事項

EventHandler は引数で指定された順序とは逆の順番で呼び出され、これを使用して、読み込みが終了したときに (イベントの exception フィールドが非 null になるか、または done? フラグが true になった場合) Stream を閉じることができます。AsyncStreamReadEvent のデータは StringBuf です。


read-line (メソッド)
public {TextInputStream.read-line
buf:#StringBuf = null,
newline-sequence:NewlineSequence = NewlineSequence.all
}:#StringBuf

self から 1 行の文字列を読み込みます。

buf: このパラメータを指定した場合、取得した文字列はここに格納されます (バッファはいつも先にクリアされます)。指定されていない場合は新規に割り当てられます。
newline-sequence: 行端を構成する文字を指定します。既定では、サポートされている改行シーケンスはすべて認識されます。

戻り値

結果の StringBuf を返します。buf が指定されている場合はそれが返され、指定されていない場合は新しい StringBuf を割り当ててそれを返します。戻り値が null の場合は、呼び出し時に self.end-of-stream?true であったことを意味します。

説明

end-of-line シーケンスが検出されるか (このシーケンスは、取得された文字列の一部ではありませんが、インプットから除去されてます)、または self.end-of-stream?true になるまで self から文字を読み込みます。

このメソッドは、self が開いていて、データが存在しない場合はブロックします。

short IO が原因で短い行が返されることはありませんが、self.end-of-stream?true になっている場合に eol-sequence のない短い行が返される可能性があります。

注意事項

self がすでに閉じている場合はエラーになります。


read-lines (メソッド)
public {TextInputStream.read-lines
out:#{Array-of StringBuf} = null,
start:int = 0,
n:int = max-int - start,
eol-sequence:#String = null
}:(lines:{Array-of StringBuf}, n-lines:int)

非推奨

代わりに TextInputStream.read-line を使用します。

self から 最大 n 個の end-of-line-sequence-terminated String を (end-of-line も含めて) 取得し、outstart で指定されたスロット位置から配置します。

戻り値

結果を受け取った Array と、結果の数 (行数) を返します。2 番目の戻り値が 0 の場合は、呼び出し時に self.end-of-stream?true であったことを意味します。その場合、1 番目の戻り値は null になります。
out: この {Array-of StringBuf} を指定すると、self から読み込まれた行を格納します。指定されていない場合、新しい {Array-of StringBuf} が割り当てられて返されます。
start: 1 行目を受け取る out 内のスロットを指定します。残りの行は後続のスロットに格納されます。
n: 読み込まれる行数を指定します。
eol-sequence: 行末を構成する文字を指定します。指定可能な値には、"\r" (キャリッジリターン)、"\n" (改行)、"\u2028" (Unicode の行末文字)、"\u2029" (Unicode の段落終了文字)、および "\r\n" があります。eol-sequencenull (既定値) を指定すると、"\r""\n""\u2028""\u2029" または "\r\n" のいずれのシーケンスも行末になります。

説明

最後に返される String は、self.end-of-stream?true になって終了し、self が最後に eol-sequence ではないものを返した場合、eol-sequence-terminated にはなりません。

このメソッドは、n 行が読み込まれるか、self.end-of-stream?true になるまで復帰しません。short IO が原因で短い行が返されることはありませんが、self.end-of-stream?true になっている場合に eol-sequence のない短い行が返される可能性があります。

このメソッドは、self が開いていて、データが存在しない場合はブロックします。


read-one-line (メソッド)
public {TextInputStream.read-one-line
buf:#StringBuf = null,
append?:bool = false,
eol-sequence:#String = null
}:(buf:StringBuf, n:int)

非推奨

代わりに TextInputStream.read-line を使用します。

self から 1 行の文字列を読み込みます。

buf: このパラメータが指定されている場合、取得した文字はここに格納されます。指定されていない場合は、新規に割り当てられます。
append?: このパラメータが true の場合、取り出された文字は buf の最後に追加されます。
eol-sequence: 行末を構成する文字を指定します。指定可能な値には、"\r" (キャリッジリターン)、"\n" (改行)、"\u2028" (Unicode の行末文字)、"\u2029" (Unicode の段落終了文字)、および "\r\n" があります。eol-sequencenull (既定値) を指定すると、"\r""\n""\u2028""\u2029" または "\r\n" のいずれのシーケンスも行末になります。

戻り値

文字を受け取った StringBuf および受け取った文字数を返します。buf が指定されている場合はそれが返され、指定されていない場合は新しい StringBuf を割り当ててそれを返します。2 番目の戻り値が 0 の場合は、呼び出し時に self.end-of-stream?true であったことを意味します。

説明

end-of-line シーケンスが検出されるか (このシーケンスも文字列の一部として返され、入力から除去されることはありません)、または self.end-of-stream?true になるまで self から文字を読み込みます。

このメソッドは、self が開いていて、データが存在しない場合はブロックします。

short IO が原因で短い行が返されることはありませんが、self.end-of-stream?true になっている場合に eol-sequence のない短い行が返される可能性があります。

注意事項

self がすでに閉じている場合はエラーになります。


read-one-string (メソッド)
public {TextInputStream.read-one-string
buf:#StringBuf = null,
append?:bool = false,
n:int = {if append? and buf != null then max-int - buf.size else max-int }
}:(buf:StringBuf, n:int)

指定された文字数の文字列を self から取得します。

buf: このパラメータが指定されている場合、取得した文字はここに格納されます。指定されていない場合は、新規に割り当てられます。
append?: このパラメータが true の場合、取り出された文字は buf の最後に追加されます。
n: 取り出す文字数。このパラメータが指定されていない場合、このメソッドは self.end-of-stream? が true になるまで文字の読み込みを続けます。

戻り値

文字を受け取った StringBuf および受け取った文字数を返します。buf が指定されている場合はそれを返し、指定されていない場合は新しい StringBuf を割り当ててそれを返します。

2 番目の戻り値が 0 の場合は、self.end-of-stream?true であることを意味します。

説明

このメソッドは、n 個の文字が読み込まれるか、self.end-of-stream?true になるまで復帰しません。

このメソッドは、self が開いていて、データが存在しない場合はブロックします。

このメソッドは、Array の代わりに StringBuf が対象である点を除けば、InputStream-of.read と同じような意味になります。

注意事項

append? フラグは buf が指定されている場合のみ効果があります。

self が現在開いていない場合はエラーになります。

n < 0 の場合もエラーになります。