日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

如何反复读取同一个 InputStream 对象

發(fā)布時(shí)間:2024/4/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何反复读取同一个 InputStream 对象 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如何反復(fù)讀取同一個(gè) InputStream 對(duì)象

  • 方法 1
  • 方法 2
    • byte 數(shù)組與 InputStream 的相互轉(zhuǎn)化
      • byte 數(shù)組轉(zhuǎn) InputStream
      • InputStream轉(zhuǎn) byte 數(shù)組
    • 實(shí)現(xiàn)反復(fù)讀 InputStream

??我們知道,每次從 InputStream 對(duì)象中讀取數(shù)據(jù)后,其當(dāng)前讀取位置的指針就會(huì)發(fā)生移動(dòng)。如果在讀取完的某時(shí)還想重新從此 InputStream 對(duì)象中讀取數(shù)據(jù),但此指針已到盡頭,因此無(wú)法做到這一點(diǎn)。另外,InputStream 還不支持克隆,這意味著也不能事先備份這個(gè) InputStream 對(duì)象。不過(guò),這并不是沒(méi)有辦法。

方法 1

??如果使用的 InputStream 對(duì)象支持方法 mark,可以聯(lián)合方法 reset 來(lái)進(jìn)行 InputStream 對(duì)象的讀取重置。方法是,先使用方法 mark 標(biāo)記一個(gè)位置,然后之后在需要重置的時(shí)候,使用方法 reset 來(lái)將此 InputStream 對(duì)象重置到剛才的位置。

??方法 mark 的使用規(guī)則如下。當(dāng) InputStream 對(duì)象調(diào)用方法 mark 時(shí),它會(huì)在此 InputStream 對(duì)象的當(dāng)前讀取位置做一個(gè)標(biāo)記。不過(guò),它需要提供一個(gè)參數(shù),這個(gè)參數(shù)是一個(gè)讀取范圍。在標(biāo)記后繼續(xù)從 InputStream 中讀取數(shù)據(jù)時(shí),如果讀取到的數(shù)據(jù)大小超過(guò)了這個(gè)范圍,則之后調(diào)用方法 reset 時(shí)將直接拋出異常。可以看出,在此處,這個(gè)參數(shù)沒(méi)有太大的作用,最好設(shè)置為大于需要讀取的數(shù)據(jù)大小,一般設(shè)置為在此 InputStream 對(duì)象的方法 available 的返回值即可。

??使用模板如下:

// 如果此 inputStream 支持方法 markif (inputStream.markSupported()) {try {inputStream.mark(imageStream.available()); // 在當(dāng)前位置作標(biāo)記} catch (IOException ioException) {ioException.printStackTrace(); // TODO:處理異常}// TODO:從此 InputStream 對(duì)象中讀取數(shù)據(jù)try {inputStream.reset(); // 將 inputStream 重置} catch (IOException ioException) {ioException.printStackTrace(); // TODO:處理異常}// TODO:重新開(kāi)始從此 InputStream 對(duì)象中讀取數(shù)據(jù)try {inputStream.reset(); // 將 inputStream 再次進(jìn)行重置,以供以后可能進(jìn)行的再次讀取} catch (IOException ioException) {ioException.printStackTrace(); // TODO:處理異常}} else {// TODO:如果不支持方法 mark,使用其它的辦法 }

方法 2

??如果使用的 InputStream 對(duì)象不支持方法 mark(比如,FileInputStream 就不支持此方法),可以考慮使用經(jīng)典的方法,這種方法類似于深克隆的通用方法。可以先將此 InputStream 對(duì)象轉(zhuǎn)化為另一種只讀的獨(dú)立的數(shù)據(jù)類型,然后再用此數(shù)據(jù)類型不斷生成所需的 InputStream 對(duì)象。這種方法有很多,比方說(shuō),先將 InputStream 對(duì)象轉(zhuǎn)化為 byte 數(shù)組,然后創(chuàng)建一個(gè) InputStream 對(duì)象來(lái)讀取此 byte 數(shù)組。但是,這種方法需要在一開(kāi)始就從 InputStream 中讀取完全部的數(shù)據(jù),這樣就會(huì)失去 InputStream 對(duì)象惰性讀取的優(yōu)勢(shì),因此最好使用上面的 方法 1。這里給出借助 byte 數(shù)組來(lái)完成這一功能的辦法。

byte 數(shù)組與 InputStream 的相互轉(zhuǎn)化

byte 數(shù)組轉(zhuǎn) InputStream

public static byte[] inputStream2byteArray(InputStream inputStream) throws IOException {return inputStream.readAllBytes(); }

InputStream轉(zhuǎn) byte 數(shù)組

public static InputStream byteArray2InputStream(byte[] bytes) {return new ByteArrayInputStream(bytes); }

實(shí)現(xiàn)反復(fù)讀 InputStream

byte[] bytes = new byte[0]; try {bytes = inputStream2byteArray(inputStream); } catch (IOException ioException) {ioException.printStackTrace(); // TODO:處理異常 }// TODO:當(dāng)需要 InputStream 時(shí),可以直接獲得一個(gè)新的 InputStream。 var needInputStream = byteArray2InputStream(bytes);// TODO:反復(fù)獲得 InputStream var needInputStream2 = byteArray2InputStream(bytes);// TODO:...

總結(jié)

以上是生活随笔為你收集整理的如何反复读取同一个 InputStream 对象的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品一区二区三区四区 | 蜜桃精品一区二区 | 久久午夜无码鲁丝片 | 日本在线观看一区二区 | 亚洲国产高清国产精品 | 一区二区三区四区高清视频 | 自拍第一区 | 欧美一区二区三区久久久 | 住在隔壁的她动漫免费观看全集下载 | 久久人人妻人人人人妻性色av | 亚洲激情在线观看 | 亚洲免费三级 | 一级片日韩 | 成人影视免费 | 欧美日韩黄色 | 天天色天天综合 | 少妇av导航| 国产精品69av| 亚洲人吸女人奶水 | 国产亚洲制服欧洲高清一区 | 在线观看亚洲国产 | 丝袜老师扒开让我了一夜漫画 | 日本不卡一二 | 精品999久久久一级毛片 | 激情五月婷婷在线 | 麻豆av电影在线 | 欧美乱大交xxxxx潮喷 | 特黄a级片| 黄色片在线 | 天天干天天曰 | 吻胸摸激情床激烈视频 | 最近中文字幕mv免费高清在线 | 国产呦小j女精品视频 | 亚洲视屏在线观看 | 91视频网页 | 99re在线视频免费观看 | 日韩av片免费观看 | 91精品国产91综合久久蜜臀 | 久久网一区 | 麻豆国产精品 | 欧美毛片网站 | 91福利视频免费观看 | 午夜久久久久久久久久久 | 调教撅屁股啪调教打臀缝av | 国产美女在线精品 | 一区二区三区视频免费 | 操夜夜 | 国内成人综合 | 少妇搡bbbb搡bbbb| 四虎影成人精品a片 | 成人在线亚洲 | 亚洲国产精品视频在线观看 | 国产又粗又大又爽视频 | www.av色| 国产精品成久久久久三级 | 国产一区欧美日韩 | 成人免费av | 欧美在线视频免费 | 蜜桃臀av | 亚洲久久久久久久 | 麻豆影音先锋 | 欧美日韩中文字幕在线观看 | 国产精品成熟老女人 | 久久99国产视频 | 狠狠躁夜夜躁av无码中文幕 | 亚洲不卡视频在线 | 亚洲AV无码精品久久一区二区 | 日韩黄色影视 | 色妞欧美 | 青青青在线免费观看 | 成人福利片| 日韩精品无码一区二区三区久久久 | 欧美色人阁 | 福利视频网址 | 97超碰在线免费 | 天天看黄色 | 福利资源在线 | 国产一级做a爱免费视频 | 日本视频一区二区三区 | 久草视 | 影音先锋亚洲天堂 | 日韩久久网 | 最近免费中文字幕 | 亚洲一区二区三区加勒比 | 高h大肚孕期孕妇play | 日日操日日碰 | 国产精品手机视频 | 色婷婷av一区二区 | 大尺度舌吻呻吟声 | 色乱码一区二区三区在线男奴 | 久草热在线视频 | 中文字幕在线观看的网站 | 亚洲AV蜜桃永久无码精品性色 | 高清欧美精品xxxxx在线看 | 久久久无码人妻精品一区 | 久久99精品久久久久久噜噜 | 婷婷色影院 | av免费网址在线观看 | 另类综合小说 |