ここから本文です

【Java】 FileOutputStreamのwrite(int b)はなぜ引数がintなのですか? Java API ...

ooo********さん

2018/1/901:38:22

【Java】
FileOutputStreamのwrite(int b)はなぜ引数がintなのですか?

Java API Document 8を見ると、

FileOutputStream
メソッドのサマリー
write(int b)
指定されたバイトをこのファイル出力ストリームに書き込

みます。

このように書かれています。

バイトを書き込むのであれば、write(byte b)なのでは?
なぜintなのでしょうか?

また、intを使うとbyteと比べで(32bit - 8bit)24bit分を無駄にしませんか?

byteを書き込む関数の引数をintにする訳を教えて下さい。

閲覧数:
28
回答数:
1

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

mpywさん

2018/1/903:15:06

こちらのBAが自分の考えに近かったので紹介しておきます。

java - OutputSteam.write(int) only writes 1 byte to file? - Stack Overflow
https://stackoverflow.com/questions/13600667/outputsteam-writeint-o...

>> The underlying reason for this strangeness is (I believe) that the write(int) method is defined to be consistent with OutputStream.write(int) which in turn defined to be consistent with InputStream.read(). InputStream.read() reads a byte and returns it as an int ... with the value -1 used to indicate the end-of-stream condition.

C言語でも getchar とか fgetchar は EOF を -1 で表しますよね。

http://phys.cool.coocan.jp/physjpn/bccwinc/getc.htm

質問した人からのコメント

2018/1/9 07:39:17

ありがとうございます。
EOFなどを知らせるのにbyteではいっぱいなんですね!

もやもやが解決しました。
ありがとうございます。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる