2016-06-26 18 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:/storage/sdcard0/Android/data/... Verursacht durch: android.system.ErrnoException: Öffnen fehlgeschlagen: ENOENT (Keine solche Datei oder das Verzeichnis)Erste Fehler beim Erstellen von Datei

Ich erhalte diesen Fehler beim Erstellen der Datei.

+0

Vielleicht haben Sie keine Berechtigung zum schreibe auf diesen Pfad? – LEQADA

Antwort

0

Also, Datei existiert. Dann dies geschieht:

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

Jetzt gibt es sie nicht, so dass Sie nicht verwenden können:

file.getPath(); 

Verwenden Sie stattdessen dies:

FileOutputStream fos=new FileOutputStream(filePath); 
0

Nicht sicher, ob Sie bereits getan haben, dies, aber Sie müssen erklären, dass Ihre App auf externen Speicher in Ihrem Manifest schreiben wird (und wenn Sie Apk-Version 23+ anvisieren, müssen Sie auch anfordern, dass der Benutzer diese Berechtigungen akzeptiert, bevor sie Ihrer App gewährt werden).

Fügen Sie diese Zeile in der Anwendung Tag in Ihrem Manifest:

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

Wenn SDK Version Targeting 23+ Sie Laufzeit benötigen Berechtigungen anfordern, wie ausführlich bei https://developer.android.com/training/permissions/requesting.html