欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2016年12月22日 14:43:06   投稿:lqh  
這篇文章主要介紹了Java 將文件轉為字節(jié)數組實例詳解的相關資料,需要的朋友可以參考下

Java將文件轉為字節(jié)數組

關鍵字:文件,文件流,字節(jié)流,字節(jié)數組,二進制

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

FileInputStream

利用FileInputStream讀取文件

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

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

ByteArrayOutputStream

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

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

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)
寫入指定字節(jié)

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

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

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

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

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

byte[] fileByte = bos.toByteArray();

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

相關文章

  • Java中Jar包反編譯解壓和壓縮操作方法

    Java中Jar包反編譯解壓和壓縮操作方法

    JAR文件就是Java 檔案文件Java Archive,它是 Java 的一種文檔格式,這篇文章主要介紹了Java中Jar包反編譯解壓和壓縮,需要的朋友可以參考下
    2023-09-09
  • 分布式調度XXL-Job整合Springboot2.X實戰(zhàn)操作過程(推薦)

    分布式調度XXL-Job整合Springboot2.X實戰(zhàn)操作過程(推薦)

    這篇文章主要介紹了分布式調度XXL-Job整合Springboot2.X實戰(zhàn)操作,包括定時任務的使用場景和常見的定時任務,通過本文學習幫助大家該選擇哪個分布式任務調度平臺,對此文感興趣的朋友一起看看吧
    2022-04-04
  • Java編程環(huán)境搭建和變量基本使用圖文教程

    Java編程環(huán)境搭建和變量基本使用圖文教程

    這篇文章主要介紹了Java編程環(huán)境搭建和變量基本使用,結合圖文形式詳細分析了java編程語言環(huán)境搭建、配置、變量、注釋的基本使用方法,需要的朋友可以參考下
    2020-02-02
  • spring注入配置文件屬性到java類

    spring注入配置文件屬性到java類

    這篇文章主要為大家介紹了spring注入配置文件屬性到java類實現示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Maven發(fā)布封裝到中央倉庫時候報錯:no default secret key

    Maven發(fā)布封裝到中央倉庫時候報錯:no default secret key

    這篇文章主要介紹了Maven發(fā)布封裝到中央倉庫時候報錯:no default secret key,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 詳解java中動態(tài)代理實現機制

    詳解java中動態(tài)代理實現機制

    這篇文章主要為大家介紹了java中動態(tài)代理實現機制的相關資料,需要的朋友可以參考下
    2016-01-01
  • AJAX?SpringBoot?前后端數據交互的項目實現

    AJAX?SpringBoot?前后端數據交互的項目實現

    本文主要介紹了AJAX?SpringBoot?前后端數據交互的項目實現,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java使用JDK與Cglib動態(tài)代理技術統(tǒng)一管理日志記錄

    Java使用JDK與Cglib動態(tài)代理技術統(tǒng)一管理日志記錄

    這篇文章主要介紹了Java使用JDK與Cglib動態(tài)代理技術統(tǒng)一管理日志記錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Servlet生命周期與工作原理詳解

    Servlet生命周期與工作原理詳解

    這篇文章主要為大家詳細介紹了Servlet生命周期與工作原理的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • 基于Maven pom文件使用分析

    基于Maven pom文件使用分析

    本文詳細介紹了Maven項目的核心配置文件pom.xml的結構和各個元素的用途,包括項目基礎信息、依賴管理、倉庫配置、構建配置、版本控制、分發(fā)和報告配置等,幫助讀者全面了解Maven項目的構建和管理過程
    2024-12-12

最新評論