在commons-io包中org.apache.commons.io.IOUtils類的toByteArray(InputStream input)已經有實現了,我們可以參考下思路,完成我們的方法,我們可以用類似下面的代碼實現inputStream轉化為byte[]數組
public static byte[] toByteArray(InputStream input) throws IOException { ByteArrayOutputStream output = new ByteArrayOutputStream(); byte[] buffer = new byte[4096]; int n = 0; while (-1 != (n = input.read(buffer))) { output.write(buffer, 0, n); } return output.toByteArray(); }
可利用此Api 讀取android sdcard上存儲的二進制文件內容:
public static byte[] readBinaryFileContent(Context context, Uri uri) { if (context == null || uri == null) return null; try { InputStream inputStream = context.getContentResolver().openInputStream(uri); if (inputStream == null) return null; ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte buff[] = new byte[1024]; int len = 0; while ((len = inputStream.read(buff)) != -1) { baos.write(buff, 0, len); } baos.flush(); return baos.toByteArray(); } catch (Exception e) { e.printStackTrace(); } return null; }