2016-08-19 10 views
0

私はAndroidアプリを開発しています。私のアプリでは、バイト配列にファイルを変換する必要があります。私はスタックオーバーフローソリューションを試して、それは常に私にnullを与えています。以下の私のコードを見てください。ファイルをバイト配列に変換することは、常にAndroidでnullです。

これは私のonActivityResultコールバック

 Uri bookUri = data.getData(); 
     if(bookUri!=null) 
     { 
      String filePath = bookUri.toString(); 
      String mime = app.getMimeType(filePath); 
      if(mime!=null && !mime.isEmpty() && (mime.toLowerCase()=="application/pdf" || mime.toLowerCase()=="application/txt" || mime.toLowerCase()=="application/text")) 
      { 
       bookFile = new File(filePath); 
       if(bookFile!=null) 
       { 
        byte[] bookByteArray = app.convertFileToByteArray(bookFile); //Converting file to byte array here 
        if(bookByteArray==null) 
        { 

         Toast.makeText(getBaseContext(),"NULL",Toast.LENGTH_SHORT).show(); 
        } 

       } 
       //change book cover image 
       ivBookFile.setImageResource(R.drawable.book_selected); 
      } 
      else{ 
       Toast.makeText(getBaseContext(),"Unable to process file you have chosen.",Toast.LENGTH_SHORT).show(); 
      } 
     } 

である私は上記のコードでバイト配列にファイルを変換していますどこ私はコメントしています。上記のコードは常に "NULL"メッセージを記録します。それは常にnullであるのはなぜ

これは私の変換方法

public byte[] convertFileToByteArray(File file) 
    { 
     FileInputStream fileInputStream=null; 

     byte[] bFile = new byte[(int) file.length()]; 

     try { 
      //convert file into array of bytes 
      fileInputStream = new FileInputStream(file); 
      fileInputStream.read(bFile); 
      fileInputStream.close(); 

      return bFile; 
     }catch(Exception e){ 
      return null; 
     } 
    } 

のですか? Androidでファイルをバイト配列に正しく変換するにはどうすればよいですか?

+0

可能な重複はありますか? [ファイルからバイト配列](http://stackoverflow.com/questions/858980/file-to-byte-in-java) – DrSatan1

+0

ほとんどの場合、例外が発生しました。何が間違っているかを見つけるために例外を記録します。 – Henry

+0

このエラーが発生しました - /file:/storage/emulated/0/Download/147125382649668.pdf:オープンに失敗しました:ENOENT(そのようなファイルまたはディレクトリはありません) 。 "file:/// storage"は自動的に "file:/ storage"に変換されます。どうすれば問題を解決できますか?@Henry –

答えて

0
public static byte[] readBytes(InputStream inputStream) throws IOException { 
    byte[] b = new byte[1024]; 
    ByteArrayOutputStream os = new ByteArrayOutputStream(); 
    int c; 
    while ((c = inputStream.read(b)) != -1) { 
     os.write(b, 0, c); 
    } 
    return os.toByteArray(); 
    } 
関連する問題