最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

java數(shù)據(jù)字節(jié)流

2022-08-25 11:37 作者:虛云幻仙  | 我要投稿

/**
* 數(shù)據(jù)字節(jié)流DataInputStream/DataOutputStream
* 處理流,提供對(duì)java基礎(chǔ)數(shù)據(jù)類型及String的存取方法,數(shù)據(jù)可以通過(guò)數(shù)據(jù)流直接存取,不需要手動(dòng)轉(zhuǎn)換類型
*/

public class DataStream1 {
? ?public static void main(String[] args) {
? ? ? ?try(DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("iostream/testData")))){
? ? ? ? ? ?//數(shù)據(jù)流為字節(jié)處理流,需要傳入字節(jié)節(jié)點(diǎn)流,在節(jié)點(diǎn)流外套一層緩沖流提高效率
? ? ? ? ? ?dos.writeBoolean(true);
? ? ? ? ? ?//直接寫入基礎(chǔ)數(shù)據(jù)類型
? ? ? ? ? ?//.writeBoolean()方法將占1bit的boolean值前面增加7個(gè)0組成byte存儲(chǔ),true為00000001,false為00000000

? ? ? ? ? ?dos.writeByte(255);
? ? ? ? ? ?//.writeByte()方法會(huì)將byte直接寫入,占1字節(jié)的255為11111111
? ? ? ? ? ?dos.writeChar('a');
? ? ? ? ? ?//.writeChar()方法會(huì)將char按2字節(jié)寫入,a為97,存儲(chǔ)為00000000 01100001
? ? ? ? ? ?dos.writeDouble(Math.random());
? ? ? ? ? ?//double占8字節(jié),存儲(chǔ)過(guò)程不占用額外空間,將double數(shù)值原樣保存
? ? ? ? ? ?dos.writeLong(124L);
? ? ? ? ? ?//long占8字節(jié)
? ? ? ? ? ?dos.writeUTF("直接寫入字符串使用.writeUTF方法");
? ? ? ? ? ?dos.flush();
? ? ? ?}catch (Exception e){
? ? ? ? ? ?e.printStackTrace();
? ? ? ?}

? ? ? ?//如果用記事本txt直接打開(kāi)結(jié)果為: a??? ? ? ? | *鐩存帴鍐欏叆瀛楃涓蹭嬌鐢?writeUTF鏂規(guī)硶
? ? ? ?//每種數(shù)據(jù)存儲(chǔ)占用空間不相同,當(dāng)要讀取這些數(shù)據(jù)時(shí)需要使用DataInputStream按存儲(chǔ)的順序來(lái)讀


? ? ? ?try(DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream("iostream/testData")))){
? ? ? ? ? ?//讀取必須按照存儲(chǔ)的順序調(diào)用讀取方法
? ? ? ? ? ?boolean bo = dis.readBoolean();
? ? ? ? ? ?//將數(shù)據(jù)取出直接轉(zhuǎn)換為存儲(chǔ)時(shí)的數(shù)據(jù)類型
? ? ? ? ? ?//如果使用.read()會(huì)返回1,且指針同樣會(huì)轉(zhuǎn)到第二個(gè)字節(jié)

? ? ? ? ? ?byte by = dis.readByte();
? ? ? ? ? ?//.readByte()方法會(huì)調(diào)用.read(),返回255,如果直接使用.read()也會(huì)返回255,byte的讀取為0-255,沒(méi)有負(fù)數(shù),如果對(duì)65535讀取readShort()會(huì)返回-1
? ? ? ? ? ?char ch = dis.readChar();
? ? ? ? ? ?//如果使用.read()需要兩次才能讀完char,第一次結(jié)果為0,第二次為97,對(duì)應(yīng)字符'a'占用兩字節(jié)
? ? ? ? ? ?double dou = dis.readDouble();
? ? ? ? ? ?//double占8字節(jié),執(zhí)行8次read()才能將指針移至下一個(gè)數(shù)據(jù)
? ? ? ? ? ?long lo = dis.readLong();
? ? ? ? ? ?String st = dis.readUTF();
? ? ? ? ? ?System.out.println(bo+"\t"+by+"\t"+ch+"\t"+dou+"\t"+lo+"\t"+st);
? ? ? ? ? ?//結(jié)果為true ?-1 a ?0.9184927814592927 124 ? ?直接寫入字符串使用.writeUTF方法
? ? ? ?}catch (Exception e){
? ? ? ? ? ?e.printStackTrace();
? ? ? ?}

? ? ? ?//dos.writeChars(".writeChars()方法會(huì)將傳入的字符串分割成字符順序存儲(chǔ),在.readChar()時(shí)需要一個(gè)一個(gè)的讀取");
? ? ? ?//數(shù)據(jù)流寫入基礎(chǔ)數(shù)據(jù)類型會(huì)將數(shù)據(jù)按其二進(jìn)制的值直接存儲(chǔ),不進(jìn)行修改(除boolean擴(kuò)容至8bit),而記事本之所以讀取不正確是因?yàn)檎{(diào)用了字符集,按字符集的規(guī)則(gbk讀2字節(jié)作為一個(gè)字符,UTF-8讀3字節(jié)作為一個(gè)字節(jié))進(jìn)行解碼
? ? ? ?//而基礎(chǔ)數(shù)據(jù)類型是直接寫入的,沒(méi)有經(jīng)過(guò)編碼,byte的255就是11111111只占1個(gè)字節(jié),char的'a'是00000000 01100001占了2個(gè)字節(jié),所以無(wú)論何種字符集都無(wú)法正確讀取內(nèi)容

? ?}
}

java數(shù)據(jù)字節(jié)流的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
伊金霍洛旗| 手游| 阿拉善左旗| 临西县| 霍州市| 旬阳县| 宣城市| 太仆寺旗| 阿勒泰市| 灯塔市| 名山县| 海晏县| 乌拉特中旗| 德惠市| 惠安县| 五指山市| 久治县| 灵寿县| 翁源县| 台中市| 平昌县| 叶城县| 盘锦市| 湖南省| 靖边县| 丹江口市| 博爱县| 石家庄市| 宜黄县| 新宾| 宣武区| 山西省| 河北区| 鲁甸县| 菏泽市| 榆树市| 平泉县| 慈利县| 车致| 永定县| 高邮市|