- ベストアンサー
ストリームのread()の-1
はじめまして。 教えていただきたいのですが、ストリーム(例えばFileOutputStream)のread()メソッドについてす。 読み込みファイルの最後に達した場合-1をリターンするとあるのですがファイルの値で-1を持っていた場合、前者と後者の違いは何で判断するのでしょうか? お手数ですがお教え下さい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
分からない用語が出てきたら、まず検索してみましょう。 "unsigned int"、"signed int"で検索すれば、コレに対する説明はたくさんヒットします。 unsigned intは「符号なしint」で、いわゆるマイナスの値をとらない数値形式です。 signed intはその逆で「符号ありint」です。 両者の細かな説明はWebで調べるか、Cの本を読むといいと思います。 コンピュータの内部で負の値がどのように表現されてるかの勉強にもなります。
その他の回答 (3)
- bgbg
- ベストアンサー率53% (94/175)
readメソッドは、読み込んだ1byteのデータをunsigned intに変換し、それをさらにsigned intに変換して返します。 なのでreadメソッドはファイルの終端以外で負の値を返しません。 符号付の-1はビット列で表すと0xFFです。(これは分かりますよね?) 0xFFをunsigned intに変換すると255です。 なので、-1という値のデータはreadメソッドでは255が返ってきます。
補足
回答ありがとうございます!! 0xFFという表現方法は大丈夫なのですが、unsigned intとsigned intとはなんでしょうか。 たびたびすいません。。。
- pcbeginner
- ベストアンサー率46% (261/560)
FileOutputStreamにはreadメソッドはありませんよ。 1byteずつ読み込むので -1 とファイルに書いてあった場合にreadメソッドで読み込むには、 「-」と「1」と2回読み込むことになります。
お礼
回答ありがとうございます。 FileInputStreamの間違いでした。。。。
- sonetea
- ベストアンサー率26% (9/34)
1byteの読み込みなので、ファイルから読み込まれた場合のデータは0x00~0xFF(0~255)までとなります。 データとしては-1は存在しません。
お礼
ありがとうございます!! もう一度試してみます!!
お礼
度々ありがとうございました!! 一度調べて確認しておきます。 ご教授ありがとうございました。