いろいろ試しにやってきたけど・・。:13回目
何よりめんどい;
時間かかる
いろいろですw
こんなことで私の趣味の時間や娯楽時間を奪われるとちょと悲しい・・。
というわけなので、音声はやめて動画は気まぐれに!
他MoEに関するブログはここでは、載せる回数が減っていくと・・^^;
MoexiへGO!┏( ^o^)┛
それより、最近気になるニュースがありまして・・
「ファイバヒューズ」
って現象ご存知ですか?
今、光回線の加入者が増えて、情報量が大きくなると光ファイバーのある部分に光子エネルギーが集中して、数千度という高温になり断線する現象です。
ある部分といったら接続部分のような気がします。
あの産総研がダイアモンドでLEDつくったからそれの応用に対処できそう?
このLEDは高温になるほど、輝度が増す特性を持っています。
溶鉱炉、電気炉施設等に応用可能ですね!
この様子じゃ温度に強い特性のほか、光自身で増幅作用をもつかも?
でも波長による変化あれば、偉いことになりますね;;
現在は、1.55uファイバかもしれないが
波長ずれると、他のデータと混信してS/N比が小さくなりそうです。
ちょいまて!CとSiO2じゃ光の屈折率ちがくね?
不純物とっぷしただけで伝搬特性変わるのがオチだな^^
ここは、違う物質で緩和するしかないかな?
もしくは、LEDの誘導放出の光の波長を損失の少ない波長に合わせるかだね
物理の話はここまで!(文系ワカリマセン\(^o^)/)
ソフトウェアの話に戻るよw
今回は、入出力のバイナリストリームの話です。
データを文字コードとして記録したり追加したりする機能です。
キャラクタストリームだと、入力した文字を単位として処理しますね!
文字化けオコスゾ!
1.バッファリング無しバイト処理
基本クラスは以下のとおり
InputStream
OutputStream
バイト入出力の基本処理をするなら
FileInputStream
FileOutputStream
バッファリングするなら
BufferedInputStream
BufferedOutputStream
バッファリングするときの基本クラス
FilterInputStream
FilterOutputStream
便利メソッド使うなら
DataInputStream
DataOutputStream
単純にバファ無しのストリームなら
FileOutputStream fos = new FileOutputStream("ファイル名");
でファイル名のファイルに書き込む
FileInputStream fis = new FileInputStream("ファイル名");
でファイル名のファイルをfisに読み込む。
fos.close()、fis.close()でクローズします。
無論バイトストリームなので、8bit単位で処理します
write()メソッドで書き込みを、read()メソッドで読み込みを行います。
byte型の変数を用いるのですが、他のデータ型だと1バイトに削られます。
ファイルからリードするときは、Int型で扱われますのでご注意を
2.バッファリング有りバイナリストリーム
バッファ機能を持たせるために・・・
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("ファイル名"));
でファイル名のファイル読み込み
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("ファイル名"));
でファイル名のファイル書き込みを行います。
ただこれらのオブジェクトを作るだけで、バッファ機能を持つのは、キャラクタストリームと同じですねww
メソッドは相変わらず、write()とread()で使えます。
バッファ機能ストリームにはマークメソッドがあります。
bi.mark(100); ・・・マーク位置が無効になるバイト数が引数
bi.reset(); ・・・・マーク位置を復活して、マークを消去
mark(4)で4文字読み込んでreset()でマークのクリア、
さらにmark(8)で8文字読みこんでreset()でクリアというバイト処理をします。
3.サービス機能つきバイナリストリーム
下記のようにオブジェクトを作ります。
DataOutputStream bo = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("ファイル名")));
これで、書き込みファイルを指定します。
DataInputStream bo = new DataInputStream(new BufferedInputStream(new FileInputStream("ファイル名")));
で読み込みファイル指定します。
長いけど、便利なメソッドが使えます。
数が多いからメンドイ・・・
でも、規則性はある!
書き込みのOutputなら・・
write()
writeBoolean
writeByte
writeChar
writeDouble
writeFloat
writeInt
writeLong
読み込みなら
read()
readBoolean
readByte
readChar
readDouble
readFloat
readInt
readLong
readUnsignedShort
などなど・・・。
いろんなデータ型に対応できるようになっています。
一応、readLine()メソッドをキャラクタストリーム同様に使えるが
お勧めはしませんね;
バイトデータを文字に正しく変換しませんからね;
※バイナリで書き込むと、16進数の文字コードが書き込みされるのでテキストえでぃったで開いた場合その設定上の文字コードで表示します。ASCIIコードで書き込むので、一文字が1byte単位ですね。
感じだとUTF8だったかな?2byteの文字コードです。
改行はそのまま¥nを解釈したコードしか書き込まないかも;
キャラクタストリームで書き込むと、文字そのままが書き込まれます。テキストエディタで見ると書き込んだ文字がそのまま見れます。文字コード設定により、文字化けするかもしれないです。
改行するとしっかりCR+LF形式で[0D 0A]を自動的に追加します。
自動的って言っても、そうするメソッドがprintln()であってprint()は0Dまでしか認識しませんねw
どちっかというとキャラクタのほうが使いやすいかな?
あたらしい拡張子とかデータマップを作るとか、俺流プロトコルならバイナリがお勧めですね!
ここまでは、データ入出力の基礎ですね。
後は、メソッドをうまく使いこなすことが上級者への道ですなw