Java中將接口返回的字節(jié)串轉(zhuǎn)為文件詳解
講一下現(xiàn)在的需求場景
最近公司要在項目中訪問一個第三方服務,在這個第三方服務中,需要下載一個報告文件,通過一個接口反饋回來。
這個下載接口返回了一個字節(jié)串,如[1,2,3,4,5,6,7],當然真實的數(shù)據(jù)不會是這個樣子的。
但是我們?nèi)绾螌⑦@個字節(jié)串轉(zhuǎn)成文件流呢?
接下來就一起來看看吧,也跟大家分享一下我處理的思路。
試一下直接轉(zhuǎn)字符串后轉(zhuǎn)字節(jié)數(shù)組
我首先拿到了這個字節(jié)串,但是并沒有辦法直接轉(zhuǎn)成字節(jié)數(shù)組byte[]。
這個時候我想到一個方法,那就是直接講這個字節(jié)串轉(zhuǎn)成字符串,也就是下面的代碼:
Object obj = "[1,2,3,4,5,6,7]"; String string = (String) obj; byte[] bytes = string.getBytes(); InputStream inputStream = new ByteArrayInputStream(target);
很遺憾,這樣是錯的,不明所以。
沒有辦法,只能再去另尋方法。
再試一下是不是特殊符合[],還有逗號造成的失敗。
于是我又再次嘗試了這種方式,代碼給到大家,如下:
Object obj = "[1,2,3,4,5,6,7]"; String string = (String) obj; byte[] bytes = string.getBytes(); InputStream inputStream = new ByteArrayInputStream(target);
如上代碼,我們先將字符串中的逗號和中括號替換掉,然后再轉(zhuǎn)成字節(jié)數(shù)組。
可惜,同樣也失敗了,沒辦法只能再次另尋他法。
最后還是不想浪費太多時間,找了一下第三方服務是否提供了代碼示例
哇唔,還真有的,于是真給了一段代碼示例,雖然有點草率,但是很關(guān)鍵。
我把代碼示例中如何轉(zhuǎn)字節(jié)數(shù)組的方法貼出來,供大家學習一下。
Object obj = "[1,2,3,4,5,6,7]";
String string = (String) obj;
ObjectMapper mapper = new ObjectMapper();
byte[] target = mapper.readValue(string , new TypeReference<byte[]>() {
});
最佳解決方案也就這個了,不免感嘆,大家還是要去多多利用可以使用的資源,有些情況可能很簡單就能解決了,沒必要去太過深扣,希望大家可以有所借鑒吧。
總結(jié)
到此這篇關(guān)于Java中將接口返回的字節(jié)串轉(zhuǎn)為文件的文章就介紹到這了,更多相關(guān)Java接口返回字節(jié)串轉(zhuǎn)文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot+MinIO+KKFileView實現(xiàn)文件預覽功能
本文主要介紹了使用SpringBoot、MinIO和KKFileView實現(xiàn)文件上傳和在線預覽功能,通過配置MinIO存儲文件,并使用KKFileView生成預覽鏈接,感興趣的可以了解一下2024-11-11
java abstract class interface之間的區(qū)別介紹
含有abstract修飾符的class即為抽象類,abstract 類不能創(chuàng)建的實例對象,abstract class類中定義抽象方法必須在具體(Concrete)子類中實現(xiàn),所以,不能有抽象構(gòu)造方法或抽象靜態(tài)方法2012-11-11
Java超詳細教你寫一個網(wǎng)絡購書系統(tǒng)案例
這篇文章主要介紹了怎么用Java來寫一個購書系統(tǒng),購買書籍主要需要每本書的編號、書名、單價、庫存屬性,能夠讓客戶通過編號來選書,感興趣的朋友跟隨文章往下看看吧2022-03-03
java后臺調(diào)用HttpURLConnection類模擬瀏覽器請求實例(可用于接口調(diào)用)
這篇文章主要介紹了java后臺調(diào)用HttpURLConnection類模擬瀏覽器請求實例,該實例可用于接口調(diào)用,具有一定的實用價值,需要的朋友可以參考下2014-10-10
SpringBoot項目整合MybatisPlus并使用SQLite作為數(shù)據(jù)庫的過程
SQLite是一個緊湊的庫,啟用所有功能后,庫大小可以小于 750KiB, 具體取決于目標平臺和編譯器優(yōu)化設(shè)置, 內(nèi)存使用量和速度之間需要權(quán)衡,這篇文章主要介紹了SpringBoot項目整合MybatisPlus并使用SQLite作為數(shù)據(jù)庫,需要的朋友可以參考下2024-07-07
Java代理模式之靜態(tài)代理與動態(tài)代理的區(qū)別及優(yōu)缺點
代理模式是一種常用的設(shè)計模式,它允許通過引入一個代理對象來控制對目標對象的訪問,在Java中,代理模式被廣泛應用,它可以提供額外的功能,如權(quán)限檢查、緩存、日志記錄等,本文將介紹靜態(tài)代理與動態(tài)代理的區(qū)別及優(yōu)缺點,需要的朋友可以參考下2023-06-06

