Java中將接口返回的字節串轉為文件詳解

講一下現在的需求場景

最近公司要在項目中訪問一個第三方服務,在這個第三方服務中,需要下載一個報告文件,通過一個接口反饋回來。

這個下載接口返回瞭一個字節串,如[1,2,3,4,5,6,7],當然真實的數據不會是這個樣子的。

但是我們如何將這個字節串轉成文件流呢?

接下來就一起來看看吧,也跟大傢分享一下我處理的思路。

試一下直接轉字符串後轉字節數組

我首先拿到瞭這個字節串,但是並沒有辦法直接轉成字節數組byte[]。

這個時候我想到一個方法,那就是直接講這個字節串轉成字符串,也就是下面的代碼:

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);

如上代碼,我們先將字符串中的逗號和中括號替換掉,然後再轉成字節數組。

可惜,同樣也失敗瞭,沒辦法隻能再次另尋他法。

最後還是不想浪費太多時間,找瞭一下第三方服務是否提供瞭代碼示例

哇唔,還真有的,於是真給瞭一段代碼示例,雖然有點草率,但是很關鍵。

我把代碼示例中如何轉字節數組的方法貼出來,供大傢學習一下。

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[]>() {
});

最佳解決方案也就這個瞭,不免感嘆,大傢還是要去多多利用可以使用的資源,有些情況可能很簡單就能解決瞭,沒必要去太過深扣,希望大傢可以有所借鑒吧。

總結

到此這篇關於Java中將接口返回的字節串轉為文件的文章就介紹到這瞭,更多相關Java接口返回字節串轉文件內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: