最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ByteArrayOutputStream與InputStream互相轉(zhuǎn)換方式

 更新時間:2021年12月10日 14:32:04   作者:Mr-先森你好  
這篇文章主要介紹了ByteArrayOutputStream與InputStream互相轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

ByteArrayOutputStream與InputStream互相轉(zhuǎn)換

InputStream 轉(zhuǎn)為 ByteArrayOutputStream

public Reader(InputStream input) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len;
        try {
            while ((len = input.read(buffer)) > -1) {
                baos.write(buffer, 0, len);
            }
            baos.flush();
        } catch (IOException e) {
            throw new Exception("Illegal flow.");
        } finally {
            try {
                input.close();
            } catch (IOException e) {
                logger.error("file stream shutdown failed.");
            }
        }
        this.baos = baos;
}

ByteArrayOutputStream 轉(zhuǎn)為 InputStream

 private InputStream streamTran(ByteArrayOutputStream in) {
        return new ByteArrayInputStream(in.toByteArray());
    }

Java字節(jié)數(shù)組流(ByteArrayInputStream和ByteArrayOutputStream)

1、FileInputStream、FileOutputStream、FileReader、FileWriter是存儲在硬盤上的

硬盤上的資源java虛擬機是無權(quán)直接訪問的,必須借助操作系統(tǒng),java虛擬機借助完了之后要通知操作系統(tǒng)釋放資源

在這里插入圖片描述

2、把源頭換成電腦上的一塊內(nèi)存(字節(jié)數(shù)組),既然是一塊內(nèi)存那么java就可以直接訪問,因為是java虛擬機的一塊內(nèi)存。不用關(guān)閉(釋放)

3、所有的東西都可以轉(zhuǎn)成字節(jié)數(shù)組(字符串轉(zhuǎn)成字節(jié)數(shù)組、任何一個數(shù)據(jù)(包括12、包括3.14、包括一個一個的對象都可以轉(zhuǎn)成字節(jié)數(shù)組))

轉(zhuǎn)成字節(jié)數(shù)組有什么好處?

字節(jié)數(shù)組就為二進制了,方便網(wǎng)絡(luò)上進行傳輸

4、文件可以無限制的往里面加內(nèi)容,但是內(nèi)存速度快、量小,所以內(nèi)存(字節(jié)數(shù)組)不允許不建議量特別的大

在這里插入圖片描述

ByteArrayInputStream(byte[] buf) 參數(shù)為一個字節(jié)數(shù)組

創(chuàng)建一個 ByteArrayInputStream ,使其使用 buf作為其緩沖區(qū)數(shù)組

ByteArrayInputStream代碼示例

/*
 * ByteArrayInputStream(byte[] buf) 
 * 創(chuàng)建一個 ByteArrayInputStream ,使其使用 buf作為其緩沖區(qū)數(shù)組
 * 
 * 四個步驟:字節(jié)數(shù)組輸入流
 * 1、創(chuàng)建源:字節(jié)數(shù)組 不要太大
 * 2、選擇流
 * 3、操作
 * 4、釋放資源:可以不用處理
 */
public class IOTest07 {
	public static void main(String[] args) {
		// 1、創(chuàng)建源
		byte[] src = "talk is cheap show me the code".getBytes();
		// 2、選擇流
		InputStream is = null;
		try {
		is = new ByteArrayInputStream(src);
		// 3、操作(分段讀?。?
		byte[] flush = new byte[5];//緩沖容器
		int len = -1;//接收長度
			while((len=is.read(flush))!=-1) {
				// 字節(jié)數(shù)組-->字符串(解碼)
				String str = new String(flush,0,len);
				System.out.println(str);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			// 4、 釋放資源
			try {
				if (null != is) {
					is.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

ByteArrayOutputStream代碼示例

/*
 * ByteArrayOutputStream()不需要指定(源)目的地()參數(shù)為空,不用傳源頭,寫完之后 主動去數(shù)組里面拿 toByteArray()
 * 
 * 字節(jié)數(shù)組輸出流 ByteArrayOutputStream
 * 1、創(chuàng)建源:內(nèi)部維護(內(nèi)部根據(jù)數(shù)據(jù)要多大給你多大)
 * (內(nèi)部根據(jù)數(shù)據(jù)要多大給你多大)當數(shù)據(jù)寫入緩沖區(qū)時,緩沖區(qū)會自動增長。 數(shù)據(jù)可以使用toByteArray()和toString() 
 * 2、選擇流:不關(guān)聯(lián)源
 * 3、操作(寫出內(nèi)容)
 * 4、釋放資源:可以不用
 * 
 * 獲取數(shù)據(jù):toByteArray
 */
public class IOTest08 {
	public static void main(String[] args) {
		// 1、創(chuàng)建源:內(nèi)部維護(內(nèi)部根據(jù)數(shù)據(jù)要多大給你多大)
		// ByteArrayOutputStream()不需要指定(源)目的地()參數(shù)為空
		byte[] dest = null;
		// 新增方法:父類沒有的方法子類有
		// 能夠使用多態(tài)的兩種:父類有的方法、子類沒有(為延用)、父類有的方法子類也有(方法重寫)
		// 2、選擇流 (因為要使用新增方法(父類沒有的方法子類有),所以不能發(fā)生多態(tài))
		ByteArrayOutputStream baos = null;
		try {
			baos = new ByteArrayOutputStream();
			// 3、操作(寫出)
			String msg = "show me the code";
			byte[] datas = msg.getBytes();// 字符串-->字節(jié)數(shù)組(編碼)
			baos.write(datas, 0, datas.length);
			baos.flush();
			// 獲取數(shù)據(jù)
			dest = baos.toByteArray();
			System.out.println(dest.length+"-->"+new String(dest,0,baos.size()));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				if (null != baos) {
					baos.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}

注意:

新增方法:父類沒有的方法子類有

能夠使用多態(tài)的兩種:父類有的方法子類沒有(為延用)、父類有的方法子類也有(方法重寫,子類進行實現(xiàn))

選擇流 (因為要使用新增方法(父類沒有的方法子類有),所以不能發(fā)生多態(tài))

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

金华市| 辽源市| 和顺县| 仁怀市| 正镶白旗| 来凤县| 于田县| 阿拉善左旗| 惠水县| 区。| 邯郸县| 丰宁| 青阳县| 罗定市| 连城县| 漠河县| 南投县| 商南县| 峨眉山市| 禄丰县| 肥东县| 尚志市| 漾濞| 星座| 兴义市| 新泰市| 鸡西市| 治多县| 盘锦市| 中超| 六安市| 南木林县| 巴林左旗| 泰顺县| 津南区| 长武县| 阳曲县| 湛江市| 平遥县| 康平县| 广昌县|