如何將字符串、字節(jié)數(shù)組轉(zhuǎn)為輸入流
將字符串、字節(jié)數(shù)組轉(zhuǎn)為輸入流
將字符串轉(zhuǎn)成輸入流:
String str = "budaye"; ByteArrayInputStream in = new ByteArrayInputStream(str.getBytes("UTF-8"));
ByteArrayInputStream是字節(jié)數(shù)組輸入流,它繼承于InputStream。
它包含一個(gè)內(nèi)部緩沖區(qū),該緩沖區(qū)包含從流中讀取的字節(jié)。
如果我們想要將字符串或者字節(jié)數(shù)組轉(zhuǎn)換成字符流,可以使用ByteArrayInputStream類。
輸入流,輸出流,文件,字節(jié)數(shù)組,Base64字符串互相轉(zhuǎn)換
輸入流轉(zhuǎn)換成字節(jié)數(shù)組
通過我封裝的下載服務(wù)獲取輸入流,然后使用 StreamUtils.copyToByteArray去獲取字節(jié)數(shù)組
InputStream inputStream = fileClient.downloadFile(tenantId, HivpBaseConstants.FileUpload.BUCKET_NAME_CAN, l.getUrl()); byte[] imgByte = StreamUtils.copyToByteArray(inputStream);
注意流只能使用一次,當(dāng)用完流之后需要關(guān)閉流。
輸入流轉(zhuǎn)換成base64編碼字符串
我們需要先轉(zhuǎn)換成字節(jié)數(shù)組然后再轉(zhuǎn)換字符串
- 轉(zhuǎn)換字節(jié)數(shù)組另一種解決方式
public static byte[] readInputStream(InputStream is) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int length = 0; try { while ((length = is.read(buffer)) != -1) { baos.write(buffer, 0, length); } baos.flush(); } catch (IOException e) { logger.error("IOException", e); } byte[] data = baos.toByteArray(); try { is.close(); baos.close(); } catch (IOException e) { logger.error("IOException", e); } return data; }
- 字節(jié)數(shù)組轉(zhuǎn)換成Base64字符串
imageFile = Base64Utils.encodeToString(data);
輸入流轉(zhuǎn)換為文件
//數(shù)據(jù)流轉(zhuǎn)MultipartFile文件 MultipartFile multipartFile = new MockMultipartFile("file", "file" +"."+ fileType, fileType, inputStream); ResponseEntity<ResponseCommonDTO> recognizeResult = hcanRemoteService.originalCheck(tenantId, companyCode, employeeNumber, multipartFile);
將本地的文件轉(zhuǎn)換成輸入流
String path = "C:\\Users\\mai\\Desktop\\發(fā)票測(cè)試集合\\aaaaaaaaaa.pdf"; File file = new File(path); InputStream ins = new FileInputStream(file);
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)ArrayList排序的方法詳解
Java中常見的ArrayList排序方法主要為三種:JDK8的stream、Comparator#compare()和Comparable#compareTo(),本文將詳解這三者的使用,需要的可以參考一下2022-05-05SpringBoot如何使用@Cacheable進(jìn)行緩存與取值
這篇文章主要介紹了SpringBoot如何使用@Cacheable進(jìn)行緩存與取值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08java解析dbf之通過javadbf包生成和讀取dbf文件
這篇文章主要介紹了java通過javadbf讀取和生成DBF文件的方法,大家參考使用吧2014-01-01SpringBoot?+?layui?框架實(shí)現(xiàn)一周免登陸功能示例詳解
這篇文章主要介紹了SpringBoot+layui框架實(shí)現(xiàn)一周免登陸功能,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08activemq整合springboot使用方法(個(gè)人微信小程序用)
這篇文章主要介紹了activemq整合springboot使用(個(gè)人微信小程序用),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03