溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

JAVA中怎么實(shí)現(xiàn)內(nèi)存流

發(fā)布時(shí)間:2021-08-06 16:13:36 來(lái)源:億速云 閱讀:120 作者:Leah 欄目:編程語(yǔ)言

本篇文章給大家分享的是有關(guān)JAVA中怎么實(shí)現(xiàn)內(nèi)存流,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。

掌握內(nèi)存操作流

輸入和輸出都是從文件中來(lái)的,當(dāng)然,也可將輸出的位置設(shè)置在內(nèi)存上,這就需要ByteArrayInputStream和ByteArrayOutputStream

ByteArrayInputStream:將內(nèi)容寫(xiě)入到內(nèi)存中,

ByteArrayOutputStream:將內(nèi)存中數(shù)據(jù)輸出

此時(shí)的操作應(yīng)該以?xún)?nèi)存為操作點(diǎn)。

利用此類(lèi) 完成一些功能。

常用方法

ByteArrayInputStream :是InputStream子類(lèi)。

public class ByteArrayInputStream extends InputStream

構(gòu)造方法:

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

接收一個(gè)byte數(shù)組,實(shí)際上內(nèi)存的輸入就是在構(gòu)造方法上將數(shù)據(jù)傳遞到內(nèi)存之中。

ByteArrayOutputStream:是OutputStream子類(lèi)

輸出就是從內(nèi)存中寫(xiě)出數(shù)據(jù)。

public class ByteArrayOutputStream extends OutputStream

構(gòu)造方法:

ByteArrayOutputStream()      創(chuàng)建一個(gè)新的 byte 數(shù)組輸出流。

主要方法:

void write(int b)      將指定的字節(jié)寫(xiě)入此 byte 數(shù)組輸出流。

利用他們,完成一個(gè)大小寫(xiě)字母轉(zhuǎn)換順序的程序。

重溫一下這個(gè)方法:getBytes();定義如下:返回的是一個(gè)byte類(lèi)型的數(shù)組?!?/p>

public byte[] getBytes() {    return StringCoding.encode(value, 0, value.length);  }

1,

int size()      返回緩沖區(qū)的當(dāng)前大小

2,

byte[] toByteArray()      創(chuàng)建一個(gè)新分配的 byte 數(shù)組。

3,

String toString()      使用平臺(tái)默認(rèn)的字符集,通過(guò)解碼字節(jié)將緩沖區(qū)內(nèi)容轉(zhuǎn)換為字符串。

利用他們,完成一個(gè)大小寫(xiě)字母轉(zhuǎn)換順序的程序。

String類(lèi)的大小寫(xiě)轉(zhuǎn)換方法:

String toLowerCase()      使用默認(rèn)語(yǔ)言環(huán)境的規(guī)則將此 String 中的所有字符都轉(zhuǎn)換為小寫(xiě)。

轉(zhuǎn)大寫(xiě):

String toUpperCase()      使用默認(rèn)語(yǔ)言環(huán)境的規(guī)則將此 String 中的所有字符都轉(zhuǎn)換為大寫(xiě)。

如果要想把一個(gè)大寫(xiě)邊小寫(xiě),則可以通過(guò)包裝類(lèi),字符的包裝類(lèi)是Character。

static char toLowerCase(char ch)      使用取自 UnicodeData 文件的大小寫(xiě)映射信息將字符參數(shù)轉(zhuǎn)換為小寫(xiě)。

代碼實(shí)例:

注意,跟文件讀取不一樣,不要設(shè)置文件路徑。

package 類(lèi)集;import java.io.* ;public class ByteArrayDemo01{  public static void main(String args[]){    String str = "HELLOWORLD" ;    // 定義一個(gè)字符串,全部由大寫(xiě)字母組成    ByteArrayInputStream bis = null ;  // 內(nèi)存輸入流    ByteArrayOutputStream bos = null ;  // 內(nèi)存輸出流    bis = new ByteArrayInputStream(str.getBytes()) ;  // 向內(nèi)存中輸出內(nèi)容,注意,沒(méi)有跟文件讀取一樣,設(shè)置文件路徑。    bos = new ByteArrayOutputStream() ;  // 準(zhǔn)備從內(nèi)存ByteArrayInputStream中讀取內(nèi)容,注意,跟文件讀取不一樣,不要設(shè)置文件路徑。     int temp = 0 ;      while((temp=bis.read())!=-1)     {       char c = (char) temp ; // 讀取的數(shù)字變?yōu)樽址?       bos.write(Character.toLowerCase(c)) ; // 將字符變?yōu)樾?xiě)      } // 所有的數(shù)據(jù)就全部都在ByteArrayOutputStream中      String newStr = bos.toString() ; // 因?yàn)樗衞utput的數(shù)據(jù)都在ByteArrayOutputStream實(shí)例對(duì)象中,所以可以取出內(nèi)容,將緩沖區(qū)內(nèi)容轉(zhuǎn)換為字符串。     try{         bis.close() ;         bos.close() ;      }catch(IOException e){         e.printStackTrace() ;     } System.out.println(newStr) ;    } };

實(shí)際上以上操作很好體現(xiàn)了對(duì)象的多態(tài)。通過(guò)實(shí)例化其子類(lèi)不同,完成的功能也不同,也就相當(dāng)于輸出的位置不同,

如果是輸出文件,則使用FileXxxx類(lèi)。如果是內(nèi)存,則使用ByteArrayXxx。

以上就是JAVA中怎么實(shí)現(xiàn)內(nèi)存流,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI