国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java 將文件轉為字節數組知識總結及實例詳解

2019-11-26 13:24:18
字體:
來源:轉載
供稿:網友

Java將文件轉為字節數組

關鍵字:文件,文件流,字節流,字節數組,二進制

摘要:最近工作中碰到的需求是,利用http傳輸二進制數據到服務器對應接口,需要傳輸userId, file(加密后)等一系列混合后的二進制數據。本文旨在記錄自己在使用Java將文件轉為字節數組的一些知識理解與匯總。

FileInputStream

利用FileInputStream讀取文件

FileInputStream是InputStream的子類,用于從文件中讀取信息,構造器接收一個File類型或表示文件路徑的String類型。

File file = new File("filePath");FileInputStream fis = new FileInputStream(file);

ByteArrayOutputStream

利用ByteArrayOutputStream將FileInputStream中的文件數據讀出來

ByteArrayOutputStream是用來在內存中創建緩沖區,所有送往“流”的數據都要放置在此緩沖區中。

ByteArrayOutputStream bos = new ByteArrayOutputStream(fis);byte[] b = new byte[1024];int len = -1;while((len = fis.read(b)) != -1) {  bos.write(b, 0, len);}

注意:ByteArrayOutputStream的write方法有三種重載形式:

write(int b)
寫入指定字節

write(byte[] b)
寫入整個字節數組b

write(byte[] b, int off, int len)
寫入字節數組b,從b的第off下標開始,寫入len個字節。

這里沒有使用第二中,而是使用了第三種,在代碼中每次獲取讀入緩沖區b中的數量,一般為1024(因為定義b的時候顯示指定了長度),只有當讀到結尾的時候,可能不夠1024個字節了,也會讀取實際的讀取字節數,但是在寫入緩沖區的時候,如果不指定寫入的數量,即不指定len,那么就會將整個b全部寫入,即使b中只有一部分內容,但是依然會寫入1024個字節。這將導致使用toByteArray時,得到的字節數組不是實際長度!

這樣就將文件流從InputStream中寫入了ByteArrayOutputStream中。

利用ByteArrayOutputStream的toByteArray()方法得到文件的字節數組。

byte[] fileByte = bos.toByteArray();

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清丰县| 溧阳市| 南涧| 即墨市| 武宁县| 含山县| 陆河县| 京山县| 民权县| 礼泉县| 武清区| 临漳县| 长治市| 秦皇岛市| 黄浦区| 翁牛特旗| 沂源县| 密云县| 西盟| 洪泽县| 康乐县| 内江市| 故城县| 新闻| 通城县| 顺平县| 湘西| 环江| 衡阳县| 金溪县| 通河县| 芦溪县| 讷河市| 廊坊市| 永济市| 神池县| 长白| 神农架林区| 达孜县| 桐乡市| 平远县|