2016-06-26 11 views
0
public void saveByteArrayToFile(Context context){ 
     Log.v(TAG, "Save byte array to file"); 
     switch(mType){ 
      case ChatMessage.AUDIO_MESSAGE: 
       filePath = context.getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_MUSIC).getAbsolutePath()+"/"+fileName; 
       break; 
      case ChatMessage.VIDEO_MESSAGE: 
       filePath = context.getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_MOVIES).getAbsolutePath()+"/"+fileName; 
       break; 
      case ChatMessage.FILE_MESSAGE: 
       filePath = context.getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath()+"/"+fileName; 
       break; 
      case ChatMessage.DRAWING_MESSAGE: 
       filePath = context.getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath()+"/"+fileName; 
       break; 
     } 
     System.out.println("Mera path"+filePath); 
     File file = new File(filePath); 

     if (file.exists()) { 
      file.delete(); 
     } 

     try { 
      FileOutputStream fos=new FileOutputStream(file.getPath()); 

      fos.write(byteArray); 
      fos.close(); 
      Log.v(TAG, "Write byte array to file DONE !"); 
     } 
     catch (java.io.IOException e) { 
      e.printStackTrace(); 
      Log.e(TAG, "Write byte array to file FAILED !"); 
     } 
    } 

java.io.FileNotFoundException:/ストレージ/ sdcard0 /アンドロイド/データ/ ... によって引き起こさ:android.system.ErrnoException:失敗開けません:ENOENT(そのようなファイルまたはディレクトリ)エラーを取得

ファイルの作成中にこのエラーが発生します。

+0

で説明するよう、実行時のアクセス権を要求する必要が23+

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

そのパスに書き込みますか? – LEQADA

答えて

0

ファイルが存在します。そして、これが起こる:今すぐ

if (file.exists()) { 
    file.delete(); 
} 

それが存在していない、あなたが使用することはできませんので:

file.getPath(); 

をする代わりに、これを使用する:

FileOutputStream fos=new FileOutputStream(filePath); 
0

わからないあなたはすでにやった場合アプリがマニフェストの外部ストレージに書き込むことを宣言する必要があります(また、apkバージョン23+をターゲットにしている場合は、アプリに付与される前にユーザーに許可を要求する必要があります)。

マニフェスト内のアプリケーションタグ内に次の行を追加します。SDKのバージョンをターゲットにした場合、あなたはたぶん、あなたがする権限がありませんhttps://developer.android.com/training/permissions/requesting.html