TranscodingTextInputStream (クラス)
public TranscodingTextInputStream {inherits {InputStreamBuffer-of char}, TextInputStream}
パッケージ: CURL.IO.STREAM
直接継承しているサブクラス: TranscodingSeekableTextInputStream

ByteInputStream からのバイト列を、適切な文字エンコーディングに基づいて文字に変換するクラス。

例外のスロー

TranscodingIOException — バイトを文字に変換できない場合。

コンストラクタ
default:
コンストラクタ public {TranscodingTextInputStream.default
stream:ByteInputStream,
close-stream-on-close?:bool = true,
buffer-size:int = {calculate-instances-per-memory-size default-buffer-memory-size, char },
unread-size:int = {max {min 4, buffer-size div 4}, 1},
character-encoding:CharEncoding = CharEncoding.none-specified,
save-bytes-for-character-encoding-reset?:bool = false
}

プロパティ
_bytes:
フィールド protected constant TranscodingTextInputStream._bytes:#ByteArray
_bytes-valid-end:
フィールド protected TranscodingTextInputStream._bytes-valid-end:int
_bytes-valid-start:
フィールド protected TranscodingTextInputStream._bytes-valid-start:int
_character-encoding:
フィールド protected TranscodingTextInputStream._character-encoding:CharEncoding
_not-at-stream-start?:
フィールド protected TranscodingTextInputStream._not-at-stream-start?:bool
character-encoding:読み込まれているバイトの現在の文字エンコーディングです。バイトを文字コードに変換する方法を定義します。
アクセサ public TranscodingTextInputStream.character-encoding:CharEncoding
fill-data-allow-short-read-supported?:fill-data が short read のサポートを許可するかどうかを示します。
アクセサ protected inline TranscodingTextInputStream.fill-data-allow-short-read-supported?:bool
fill-data-non-blocking-supported?:fill-data が non-blocking のサポートを許可するかどうかを示します。
アクセサ protected TranscodingTextInputStream.fill-data-non-blocking-supported?:bool
open?:このストリームが現在開いているかどうかを示します。Stream-of.close が呼び出されると false を返します。
アクセサ public TranscodingTextInputStream.open?:bool
origin-url:このストリームを開いた Url を返します。そのような Url が存在しない場合は null を返します。
アクセサ public TranscodingTextInputStream.origin-url:#Url
save-bytes-for-character-encoding-reset?:save-bytes-for-character-encoding-reset? の値を設定します。
アクセサ public TranscodingTextInputStream.save-bytes-for-character-encoding-reset?:bool
セッター public TranscodingTextInputStream.save-bytes-for-character-encoding-reset?:bool
underlying-input-stream:バッファに格納される ByteInputStream。読み込まれてテキストにコード変換されるバイト列を提供します。
フィールド public-get protected-set TranscodingTextInputStream.underlying-input-stream:ByteInputStream
when-last-modified:元のデータの最終変更時刻 (特定できる場合)。
アクセサ public TranscodingTextInputStream.when-last-modified:#DateTime
プロパティ 継承 InputStreamBuffer-of: _buffer-valid-end, _seen-eof?, non-blocking-supported?, read-buffer-data-size, read-buffer-empty?, read-buffer-size, unread-size
プロパティ 継承 StreamBuffer-of: _buffer, _buffer-location, _buffer-valid-start, _seek-location
プロパティ 継承 PeekableInputStream-of: end-of-stream?

メソッド
async-read:ストリームから非同期に読み込みを行います。
public {TranscodingTextInputStream.async-read
out:#{Array-of char} = null,
n:int64 = max-int64,
max-chunk-size:int = 8192,
partial?:bool = false,
append?:bool = false,
event-handler:EventHandler,
...:EventHandler
}:AsyncStreamReader
async-read-string:Url から非同期に文字列を読み込みます。
public {TranscodingTextInputStream.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
character-encoding-reset:ストリームをリセットし、新しい CharEncoding で最初からバイト列の再変換を開始します。
public {TranscodingTextInputStream.character-encoding-reset
character-encoding:CharEncoding,
save-bytes-for-character-encoding-reset?:bool = false
}:void
close:ストリームを閉じます。呼び出されると、ストリームを使用不可能にして Stream-of.open?false を返すことを確かめます。
public {TranscodingTextInputStream.close}:void
fill-data:ストリームの元になる配列や集合体からより多くのデータを取得するために、バッファリングに関するコードで呼び出されるルーチン。
protected {TranscodingTextInputStream.fill-data
buf:{Array-of char},
min-read:int,
start:int = 0,
max-read:int = buf.size - start
}:(int, eof?:bool)
メソッド 継承 InputStreamBuffer-of: clear-buffer, do-buffer-fill-data, read, read-one, resize-buffer, set-unread-size, unread-one
メソッド 継承 TextInputStream: read-line, read-lines, read-one-line, read-one-string
メソッド 継承 BufferedInputStream-of: peek-one, peek-one-any, unread-one-any
メソッド 継承 InputStream-of: copy-out, read-anys, read-one-any, to-Iterator
メソッド 継承 Stream-of: verify-open
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
default (コンストラクタ)
public {TranscodingTextInputStream.default
stream:ByteInputStream,
close-stream-on-close?:bool = true,
buffer-size:int = {calculate-instances-per-memory-size default-buffer-memory-size, char },
unread-size:int = {max {min 4, buffer-size div 4}, 1},
character-encoding:CharEncoding = CharEncoding.none-specified,
save-bytes-for-character-encoding-reset?:bool = false
}
stream: バッファに格納され文字にコード変換される ByteInputStream
close-stream-on-close?: このクラスの close メソッドが、基礎となるストリーム上で close を呼び出すかどうかを指定します。
buffer-size: メイン バッファが保持するアイテムの概数。
unread-size: 連続する unread-one 操作に対して保持可能なアイテムの概数。
character-encoding: バイトを文字に変換する際に使用する CharEncoding。既定値は CharEncoding.none-specified で、ストリームの先頭のマーカーに基づいて適切なエンコーディングの決定を行ないます。
save-bytes-for-character-encoding-reset?: true の場合、stream から読み込まれたバイト列が保存され、内部のバイト バッファが必要に応じて拡張し、後で使用できるようになります。バイト列は、 save-bytes-for-character-encoding-reset?false に設定して TranscodingTextInputStream.character-encoding-reset を呼び出すか、 TranscodingTextInputStream.save-bytes-for-character-encoding-reset?false に設定するまで保存されます。その他の場合は TranscodingTextInputStream は正常に動作します。



プロパティ詳細
_bytes (フィールド)
protected constant TranscodingTextInputStream._bytes:#ByteArray
この項目はサポートされていません。内部使用限定となっています。


_bytes-valid-end (フィールド)
protected TranscodingTextInputStream._bytes-valid-end:int
この項目はサポートされていません。内部使用限定となっています。


_bytes-valid-start (フィールド)
protected TranscodingTextInputStream._bytes-valid-start:int
この項目はサポートされていません。内部使用限定となっています。


_character-encoding (フィールド)
protected TranscodingTextInputStream._character-encoding:CharEncoding
この項目はサポートされていません。内部使用限定となっています。


_not-at-stream-start? (フィールド)
protected TranscodingTextInputStream._not-at-stream-start?:bool
この項目はサポートされていません。内部使用限定となっています。


character-encoding (アクセサ)
アクセサ public TranscodingTextInputStream.character-encoding:CharEncoding

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

注意事項

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


fill-data-allow-short-read-supported? (アクセサ)
アクセサ protected inline TranscodingTextInputStream.fill-data-allow-short-read-supported?:bool

fill-data が short read のサポートを許可するかどうかを示します。

注意事項

fill-data の呼び出し方法を決定する際にこれを調べることができます。


fill-data-non-blocking-supported? (アクセサ)
アクセサ protected TranscodingTextInputStream.fill-data-non-blocking-supported?:bool

fill-data が non-blocking のサポートを許可するかどうかを示します。

注意事項

fill-data の呼び出し方法を決定する際にこれを調べることができます。


open? (アクセサ)
アクセサ public TranscodingTextInputStream.open?:bool

このストリームが現在開いているかどうかを示します。Stream-of.close が呼び出されると false を返します。

注意事項

InputStream-of および OutputStream-of の既定の実装で使用します。ストリームが開いていない場合は多くの操作でエラーが発生します。

オーバーライド

サブクラスにはこのメソッドを実装する必要があります。


origin-url (アクセサ)
アクセサ public TranscodingTextInputStream.origin-url:#Url

このストリームを開いた Url を返します。そのような Url が存在しない場合は null を返します。

{read-open {url "file://c:/foo.txt"}}.origin-url Url file://c:/foo.txt (そのようなファイルが存在すると仮定して) を返します。

一方、{{TextInputStream-from String} "foo"}.origin-urlnull を返します。


save-bytes-for-character-encoding-reset? (アクセサ)
アクセサ public TranscodingTextInputStream.save-bytes-for-character-encoding-reset?:bool
セッター public TranscodingTextInputStream.save-bytes-for-character-encoding-reset?:bool

save-bytes-for-character-encoding-reset? の値を設定します。

save-bytes-for-character-encoding-reset?: true の場合は特別モードになり、読み込まれたすべてのバイトが保存されます。これは save-bytes-for-character-encoding-reset?false に設定して TranscodingTextInputStream.character-encoding-reset を呼び出すか、TranscodingTextInputStream.save-bytes-for-character-encoding-reset?false に設定するまで継続します。false の場合は、文字へのデコードが完了したらバイト列は保存されなくなります。

注意事項

この TranscodingTextInputStream の作成時に save-bytes-for-character-encoding-reset?false に設定した場合、またはすでに false に設定されていてストリームにデータが読み込まれている場合、これを呼び出して save-bytes-for-character-encoding-reset?true に設定することはできません。


underlying-input-stream (フィールド)
public-get protected-set TranscodingTextInputStream.underlying-input-stream:ByteInputStream

バッファに格納される ByteInputStream。読み込まれてテキストにコード変換されるバイト列を提供します。



when-last-modified (アクセサ)
アクセサ public TranscodingTextInputStream.when-last-modified:#DateTime

元のデータの最終変更時刻 (特定できる場合)。

説明

基となるデータが最後に修正された時間がわかる場合は、その時間を返します。そうでなければ、null を返します。 http: URL を基にして作成されたストリームの場合は、存在すれば Last-Modified HTTP ヘッダーをパースした時間となります。 DefaultBufferedInputStream-of のような他のストリームをラップしたストリームの場合は、一般的に基になるストリームの値となります。 それ以外のストリームは null を返します。





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

ストリームから非同期に読み込みを行います。

プログラミング注意事項

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

戻り値

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

注意事項

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


async-read-string (メソッド)
public {TranscodingTextInputStream.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 です。


character-encoding-reset (メソッド)
public {TranscodingTextInputStream.character-encoding-reset
character-encoding:CharEncoding,
save-bytes-for-character-encoding-reset?:bool = false
}:void

ストリームをリセットし、新しい CharEncoding で最初からバイト列の再変換を開始します。

character-encoding: やり直す際にバイト列のデコードに使用する新しい CharEncoding
save-bytes-for-character-encoding-reset?: true の場合は特別モードになり、読み込まれたすべてのバイトが保存されます。これは save-bytes-for-character-encoding-reset?false に設定して TranscodingTextInputStream.character-encoding-reset を呼び出すか、TranscodingTextInputStream.save-bytes-for-character-encoding-reset?false に設定するまで継続します。false の場合は、文字へのデコードが完了したらバイト列は保存されなくなります。

注意事項

これを呼び出せるのは、TranscodingTextInputStream の作成時に save-bytes-for-character-encoding-reset?true に設定され、まだ false に再設定されていない場合だけです。


close (メソッド)
public {TranscodingTextInputStream.close}:void

ストリームを閉じます。呼び出されると、ストリームを使用不可能にして Stream-of.open?false を返すことを確かめます。



fill-data (メソッド)
protected {TranscodingTextInputStream.fill-data
buf:{Array-of char},
min-read:int,
start:int = 0,
max-read:int = buf.size - start
}:(int, eof?:bool)

ストリームの元になる配列や集合体からより多くのデータを取得するために、バッファリングに関するコードで呼び出されるルーチン。

buf: データを読み込む配列。バッファまたはユーザー指定の配列のいずれかです。
min-read: データの終わりに到達しなかった場合に、このルーチンが復帰する前に読み込む最小データ量。
start: 読み込まれたデータを格納する buf の開始位置。
max-read: このルーチンが復帰する必要がある前に buf に読み込める最大データ量。buf の使用可能領域を超えてもよく、その場合は読み込まれたデータ量に応じて buf のサイズが変更されます。

戻り値

読み込まれたアイテム数、および EOF に到達したかどうかを返します。データが読み込まれた場合でも eof?true になる場合がありますが、このような組み合わせの必要はありません。実装においては、データが存在しない場合にのみ eof?true を返すような選択が可能です。

注意事項

buf は必要に応じてサイズが増えることがあっても、読み込んだデータ量のサイズには縮小されません。min-read0 を指定すると、呼び出し側は、non-blocking?true に設定して InputStream-of.read を呼び出したときと基本的に同じ意味に解釈します。min-read1 を指定すると、呼び出し側は、allow-short-read?true に設定して InputStream-of.read を呼び出したときと基本的に同じ意味に解釈します。一般に、min-readmax-read の値が異なる場合、min-read のデータ量が読み込まれた後に負担が生じたり時間のかかるような処理をルーチンは実行せず、直ちに max-read のデータ量の読み込みが可能になるときにこれを実行するようにします。

オーバーライド

データ ソースからのデータをバッファに格納するには、サブクラスでこのメソッドをオーバーライドします。