- ベストアンサー
入出力について
今入出力について勉強しているのですが、基本的な部分の理解にかけていて困っています。どなたか以下の点についてご返事いただけないでしょうか。 1.バッファとは・・・ 2.バイト配列とは・・・ 3.markメソッドの引数に0を入れても-の数字を入れてもエラーがでないんですがどんな数値を入れておいてもresetされるんですか?markメソッドについて教えてください。 4.入出力について詳しく述べられているサイトがあれば教えてください。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんわ、、、ふたたびです mark(int readlimit)のreadlimitとは何バイト分先読みできるかということです。 まず、mark(int readlimit)がよばれると BufferedInputStreamクラスのprotected int marklimitフィールドにreadlimitの値がわたされます。 それとともにprotected int markposフィールドに現在のオフセット位置がわたされます。 そして、reset()メソッドが呼び出されると上記のフィールドmarkposの値をもとにオフセット位置を戻すのですが、marklimitフィールドが参照されている場所というのはprivate fill() throws IOException というメソッドが呼ばれたときだけなのです。 しかもそのメソッドの中でも目安程度にしか使われておらず、「とりあえずはmarklimitとデフォルトで確保したバッファ配列を比べてみてmarklimitのほうがおおきかったら、marklimitの値をもとに配列を確保しなおす」程度の扱いです(笑)(正確に細かくいうと多少違いますが、イメージ的にはこんな感じです)。 仮にmarklimitを基準に確保しなおしたバッファで足りなくなったとしても、オーバーフローしないようにバッファを新たに確保しなおしてしまいます。 だらだらとした説明になりましたがおわかりいただけたでしょうか??
その他の回答 (2)
- hidebu-
- ベストアンサー率53% (45/84)
1、一時的にメモリへデータを保存しておくこと 2、データを1バイトづつバイト型変数の配列に格納すること 3、mark(int)→マーク位置を設定するメソッド。mark→現在のマーク位置を示すフィールド reset()→マーク位置までバッファを戻すメソッド 4、APIリファレンス こんな感じでよろしいでしょうか?
補足
ありがとうございます。 しかし、markの引数に100を入れてもマイナスの数を入れても同じ結果が得られるのですが・・・どういうことなんですか?
- Budgerigar
- ベストアンサー率41% (7/17)
下記のサイトはJavaの基礎やサンプルがいっぱい載っていてわかりやすいですよ。 参考になればいいんですが・・・・。
お礼
ありがとうございました。参考にしてみます。 でもサイトにはバッファとバイト配列の意味が乗っていなかったんですが・・・
お礼
とってもわかりやすかったです。ありがとうございます!