IT, Programming/Android

안드로이드 InputStream을 ByteArray로 바꾸기 (InputStream to ByteArray)

우주먼지 [宇宙塵, cosmic dust] 2014. 8. 28. 14:58

안드로이드 InputStream을 ByteArray로 바꾸기 (InputStream to ByteArray)

종종 InputStream으로 참조할 수 있는 데이터를 ByteArray-byte[]-로 바꿔야 할 때가 있다. 파일로 부터 읽어들인다든지 통신으로 읽어들인다든지 했는데, 이 데이터를 파싱하거나 가공해야 할 때 ByteArray로 변경해야 편할 때가 있다.

 

나의 경우에는 file을 AES로 암호화하기 위해 ByteArray로 변경할 필요가 있었다. 뭐 어쨌든 사연이 어떻게 됐든 용도가 어떻게 됐든지간에 필요할 때가 있다.

 

하기 함수를 이용하면 InputStream을 ByteArray로 바꿀 수 있다.

 

     
     
     public static byte[] inputStreamToByteArray(InputStream is) {  
        byte[] resBytes = null;
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
       
        byte[] buffer = new byte[1024];
        int read = -1;
        try {
            while ( (read = is.read(buffer)) != -1 ) {
               bos.write(buffer, 0, read);
            }
           
            resBytes = bos.toByteArray();
            bos.close();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
       
        return resBytes;
    }

   

InputStream을 ByteArray로 바꾸기 (InputStream to ByteArray)

 

 

 또한 ByteArray를 InputStream으로도 바꿀 수 있다. 하기는 해당 코드이다.

     
     
    public static InputStream byteArrayToInputStream(byte[] srcBytes) {
        return new ByteArrayInputStream(srcBytes);
    }


ByteArray를 InputStream으로 바꾸기 (ByteArray to InputStream)

 

ByteArray를 InputStream으로 바꾸는 것은 java.io 에서 기본으로 제공하기 때문에 코드가 졸라단순하다잘했어라이코스.