2017-09-19 57 views
0

我無法創建文件的byte[]數組,並重新創建byte[]到文件。文件從byte[]陣列中創建,但是無法打開。它說的格式不被支持。像明智的我必須做更多的文件,如視頻,音頻,文檔等我已經嘗試了答案可用堆棧溢出,但沒有成功。無法創建文件的byte []數組,反之亦然 - android

這裏是我的代碼: - 圖像轉換成byte[]陣列

public static byte[] getBytesFromImage() { 
FileInputStream in; 
    try { 
     File photo = new File(Environment.getExternalStorageDirectory(), "nature.jpg"); 
     FileInputStream fis = new FileInputStream(photo); 
     ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
     byte[] b = new byte[1024]; 
     for (int readNum; (readNum = fis.read(b)) != -1;) { 
      bos.write(b, 0, readNum); 
     } 
     bMapArray = bos.toByteArray(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return bMapArray; 
} 

要轉換byte[]數組轉換成圖像文件。

public static String getImageFromBytesTemp() { 
    File file = new File(Environment.getExternalStorageDirectory(), "nature2.jpg"); 
    if (file.exists()) { 
     file.delete(); 
    } 

    try { 
     FileOutputStream fos=new FileOutputStream(file.getAbsolutePath()); 
     fos.write(bMapArray); 
     fos.close(); 
     } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return file.getAbsolutePath(); 
} 
+0

你試過轉換字節[]爲位圖? – Gotiasits

+0

@Gotiasits是的,我已經嘗試使用位圖,沒有結果,同樣的問題發生。 –

+0

嗯,我只是用'bitmap.compress()'試了一下,它工作正常。檢查你的logcat。 當你嘗試在你自己的應用程序或文件管理器中打開文件時,你會得到「format not supprted」格式嗎? – Gotiasits

回答

0

你的代碼是好的, 也許你只需要刷新你ByteArrayOutputStream

for (int readNum; (readNum = fis.read(b)) != -1;) { 
     bos.write(b, 0, readNum); 
    } 
    bMapArray = bos.toByteArray(); 

    bos.flush(); 
    bos.close(); 
+0

它不工作。 –

+0

我的提示是嘗試一個小文件,如果它不起作用打開一個工具,可以讓你比較源文件和目標文件或幾乎在十六進制。 –

+0

我想用小於500kb的最小文件。 –