前提・実現したいこと
プログラミング勉強歴約3カ月で、現在Javaのストリームについて学んでいます。
超超初心者です。
参考にしているテキストの例題について、不明な点があったので質問させていただきます。
この例題ではFileOutputStreamクラスを使用しています。
知りたいのは、
「writeメソッドに引数として渡せる値について」と
「この例題は実用的なのか」
ということです。詳しくはソースコードの下に書いています。
実際の例題のバイナリファイルに書き出すクラスと
参考として読み込むクラスの計2つのソースコードを掲載します。
書き出しクラスのソースコード
Java
1//インポート・クラス記述・try{などは省略 2 3 char a = 'A' , 'B'; 4 int c = 128; 5 FileOutputStream out = new FileOutputStream("file.dat"); 6 7 out.write(a); 8 out.write(b); 9 out.write(c); 10 11 out.close(); 12 13//例外処理は省略 14
読み込みクラスのソースコード(※参考)
Java
1//インポート・クラス記述・try{などは省略 2 3 FileInputStream in = new FileInputStream("file.dat"); 4 int c; 5 6 while((c = in.read()) != -1) 7 System.out.ptint(c + " "); 8 in.close(); 9 10//例外処理は省略 11
実行結果(file.dat)
65 98 128
詳しい質問内容
######「writeメソッドに引数として渡せる値について」
参考にしているテキストでは ”引数にはint型またはbyte型の値を指定できる” とありました。
しかし例題ではchar型の値を引数として渡しています。
javaのAPIで調べてみると、自分の調べた限りでは引数はint型かbyte型で間違いないようです。
また、APIによると ”int型は使用できるが、上位24bitは無視される” とありました。残り8bitだとbyte型と同じ数字しか入れられない気がするのですが・・・。(もしかしてint型下位8bitだと、符号なしの整数値として扱われて255までの数字が入れられるようになるとか・・・?)
なぜchar型の変数をwriteメソッドの引数として渡せるのでしょうか。また、
byte型でなくint型を引数に指定するメリットは何でしょうか。
「この例題は実用的なのか」
ネットでバイナリファイルの書き出しについて調べていると、char型やint型ではなく”byte型”の変数を使っているソースコードの例が多い気がしました。
もし例題のコードが実際によく使う実用的な記述方法なら、考える価値アリだと思うのですが、そうでないならこの例題についてひたすら考えて時間を潰すよりも別のテキストやネットの情報から学ぶ方が効率的だと考えています。
”例題”としてではなく”実際の使用例”として、上記のソースコードでのWriteメソッドの使い方(引数にchar型、int型指定)は覚えておいた方がよいのでしょうか。
質問は以上です。長々とすみません。ご回答お待ちしております。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/26 11:05
2019/05/26 13:36
2019/05/27 04:57
2019/05/27 05:29
2019/05/27 05:41
2019/05/27 05:54
2019/05/27 09:25