欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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是存儲(chǔ)在硬盤(pán)上的

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

在這里插入圖片描述

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

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

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

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

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

在這里插入圖片描述

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

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

ByteArrayInputStream代碼示例

/*
 * ByteArrayInputStream(byte[] buf) 
 * 創(chuàng)建一個(gè) ByteArrayInputStream ,使其使用 buf作為其緩沖區(qū)數(shù)組
 * 
 * 四個(gè)步驟:字節(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;//接收長(zhǎng)度
			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ù)為空,不用傳源頭,寫(xiě)完之后 主動(dòng)去數(shù)組里面拿 toByteArray()
 * 
 * 字節(jié)數(shù)組輸出流 ByteArrayOutputStream
 * 1、創(chuàng)建源:內(nèi)部維護(hù)(內(nèi)部根據(jù)數(shù)據(jù)要多大給你多大)
 * (內(nèi)部根據(jù)數(shù)據(jù)要多大給你多大)當(dāng)數(shù)據(jù)寫(xiě)入緩沖區(qū)時(shí),緩沖區(qū)會(huì)自動(dòng)增長(zhǎng)。 數(shù)據(jù)可以使用toByteArray()和toString() 
 * 2、選擇流:不關(guān)聯(lián)源
 * 3、操作(寫(xiě)出內(nèi)容)
 * 4、釋放資源:可以不用
 * 
 * 獲取數(shù)據(jù):toByteArray
 */
public class IOTest08 {
	public static void main(String[] args) {
		// 1、創(chuàng)建源:內(nèi)部維護(hù)(內(nèi)部根據(jù)數(shù)據(jù)要多大給你多大)
		// ByteArrayOutputStream()不需要指定(源)目的地()參數(shù)為空
		byte[] dest = null;
		// 新增方法:父類(lèi)沒(méi)有的方法子類(lèi)有
		// 能夠使用多態(tài)的兩種:父類(lèi)有的方法、子類(lèi)沒(méi)有(為延用)、父類(lèi)有的方法子類(lèi)也有(方法重寫(xiě))
		// 2、選擇流 (因?yàn)橐褂眯略龇椒?父類(lèi)沒(méi)有的方法子類(lèi)有),所以不能發(fā)生多態(tài))
		ByteArrayOutputStream baos = null;
		try {
			baos = new ByteArrayOutputStream();
			// 3、操作(寫(xiě)出)
			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();
			}
		}
	}
}

注意:

新增方法:父類(lèi)沒(méi)有的方法子類(lèi)有

能夠使用多態(tài)的兩種:父類(lèi)有的方法子類(lèi)沒(méi)有(為延用)、父類(lèi)有的方法子類(lèi)也有(方法重寫(xiě),子類(lèi)進(jìn)行實(shí)現(xiàn))

選擇流 (因?yàn)橐褂眯略龇椒?父類(lèi)沒(méi)有的方法子類(lèi)有),所以不能發(fā)生多態(tài))

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

相關(guān)文章

  • 在Java編程中使用正則表達(dá)式

    在Java編程中使用正則表達(dá)式

    這篇文章主要介紹了在Java編程中使用正則表達(dá)式,注意使用matches()方法檢測(cè)一下Java對(duì)正則表達(dá)式的支持情況,需要的朋友可以參考下
    2015-08-08
  • Java CountDownLatch的源碼硬核解析

    Java CountDownLatch的源碼硬核解析

    對(duì)于并發(fā)執(zhí)行,Java中的CountDownLatch是一個(gè)重要的類(lèi)。為了更好的理解CountDownLatch這個(gè)類(lèi),本文將通過(guò)例子和源碼帶領(lǐng)大家深入解析這個(gè)類(lèi)的原理,感興趣的可以學(xué)習(xí)一下
    2022-10-10
  • Java中的transient關(guān)鍵字解析

    Java中的transient關(guān)鍵字解析

    這篇文章主要介紹了Java中的 transient關(guān)鍵字解析,有時(shí)候我們的一些敏感信息比如密碼并不想序列化傳輸給對(duì)方,這個(gè)時(shí)候transient關(guān)鍵字就派上用場(chǎng)了,如果一個(gè)類(lèi)的變量加上了transient關(guān)鍵字那么這個(gè)字段就不會(huì)被序列化,需要的朋友可以參考下
    2023-09-09
  • Java如何取掉json數(shù)據(jù)中值為null的屬性字段

    Java如何取掉json數(shù)據(jù)中值為null的屬性字段

    這篇文章主要介紹了Java如何取掉json數(shù)據(jù)中值為null的屬性字段,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Spring?Boot項(xiàng)目中使用OpenAI-Java的示例詳解

    Spring?Boot項(xiàng)目中使用OpenAI-Java的示例詳解

    Spring?Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程,這篇文章主要介紹了Spring?Boot項(xiàng)目中使用OpenAI-Java的示例詳解,需要的朋友可以參考下
    2023-04-04
  • HttpClient實(shí)現(xiàn)表單提交上傳文件

    HttpClient實(shí)現(xiàn)表單提交上傳文件

    這篇文章主要為大家詳細(xì)介紹了HttpClient實(shí)現(xiàn)表單提交上傳文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • springboot自帶的緩存@EnableCaching用法

    springboot自帶的緩存@EnableCaching用法

    這篇文章主要介紹了springboot自帶的緩存@EnableCaching用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 使用Java實(shí)現(xiàn)qq郵箱發(fā)送郵件

    使用Java實(shí)現(xiàn)qq郵箱發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了使用Java實(shí)現(xiàn)qq郵箱發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2010-05-05
  • java中枚舉的詳細(xì)使用介紹

    java中枚舉的詳細(xì)使用介紹

    本篇文章介紹了,在java中枚舉的詳細(xì)使用。需要的朋友參考下
    2013-04-04
  • SpringMVC用JsonSerialize日期轉(zhuǎn)換方法

    SpringMVC用JsonSerialize日期轉(zhuǎn)換方法

    下面小編就為大家?guī)?lái)一篇SpringMVC用JsonSerialize日期轉(zhuǎn)換方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起 小編過(guò)來(lái)看看吧
    2016-11-11

最新評(píng)論