如何將字符串、字節(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。
它包含一個內(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ā)票測試集合\\aaaaaaaaaa.pdf"; File file = new File(path); InputStream ins = new FileInputStream(file);
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實現(xiàn)利用廣度優(yōu)先遍歷(BFS)計算最短路徑的方法
這篇文章主要介紹了Java實現(xiàn)利用廣度優(yōu)先遍歷(BFS)計算最短路徑的方法,實例分析了廣度優(yōu)先遍歷算法的原理與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-04-04
shiro實現(xiàn)單點登錄(一個用戶同一時刻只能在一個地方登錄)
這篇文章主要介紹了shiro實現(xiàn)單點登錄(一個用戶同一時刻只能在一個地方登錄)的相關(guān)資料,非常不錯,具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧2016-08-08
SpringBoot集成Tess4J實現(xiàn)OCR的示例代碼
Tess4J是一個基于Tesseract OCR引擎的Java接口,可以用來識別圖像中的文本,說白了,就是封裝了它的API,讓Java可以直接調(diào)用,本文給大家介紹了SpringBoot集成Tess4J實現(xiàn)OCR的示例,需要的朋友可以參考下2024-12-12
mybatis和mybatis-plus設(shè)置值為null不起作用問題及解決
Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查詢時對空值的處理策略,通過配置不同的策略類型,可以靈活地處理實體對象的空值問題2025-02-02
SpringBoot接口冪等性4種解決方案+避坑實戰(zhàn)指南
接口冪等性,看似簡單,實則關(guān)乎資金安全、用戶體驗和系統(tǒng)穩(wěn)定性,今天,咱們就來聊聊在SpringBoot項目中,如何真正落地接口冪等性,避免成為“背鍋俠”,感興趣的朋友跟隨小編一起看看吧2025-09-09
解決idea啟動報錯javax.imageio.IIOException的問題
這篇文章主要介紹了idea啟動報錯javax.imageio.IIOException,解決打不開idea問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
SpringBoot 中 CommandLineRunner的作用示例詳解
SpringBoot提供的一種簡單的實現(xiàn)方案就是添加一個model并實現(xiàn)CommandLineRunner接口,實現(xiàn)功能的代碼放在實現(xiàn)的run方法中,本文給大家介紹SpringBoot中CommandLineRunner的作用,感興趣的朋友一起看看吧2025-06-06

