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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM