2017-07-21 4 views
0

Ich versuche, einige Dateien auf SD-Karte zu kopieren und sie dann zu löschen. Aber oft werden die Dateien nicht kopiert und nur gelöscht.Datei gelöscht, ohne kopiert zu werden

Und auch oft FileInputStream ist null wo, wie ich überprüfe, ob die Datei, die übertragen werden muss existiert oder nicht und auch wenn es beschreibbar ist oder nicht.

Dies ist der Code, den ich eine Datei zu einem Zeitpunkt

public static void move(final File remove,final DocumentFile move_to_folder) { 

      final String mime = MimeTypes.getMimeType(remove); 


        final DocumentFile move = move_to_folder.createFile(mime, remove.getName()); 

        try { 
         inStream = new FileInputStream(remove); 
         outStream = 
           con.getApplicationContext().getContentResolver().openOutputStream(move.getUri()); 
         final byte[] buffer = new byte[4096]; 
         int bytesRead; 
         while ((bytesRead = inStream.read(buffer)) != -1) { 
          outStream.write(buffer, 0, bytesRead);  
         } 

        } catch (IOException e) { 
         e.printStackTrace(); 
        } finally { 
         try { 
          if(inStream!=null) 
          { 
           inStream.close(); 
          }         
          if(outStream!=null) 
          { 
           outStream.close();         
          } 
           delete(remove); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 
       } 
    } 

Ich übertrage viele Dateien verschieben bin mit so innerhalb einer Async Aufgabe diesen Code ich verwende.

Jede Hilfe wäre wirklich dankbar.

+0

dieses https lesen gesetzt haben: // Stackoverflow .com/a/32652909/3682535 – rupinderjeet

+0

@rubinderjeet Danke. Ich habe die Antwort gelesen, konnte aber keine Lösung für mein Problem finden. – Rahulrr2602

Antwort

1

Wenn Sie eine Ausnahme haben, wird das Entfernen ohne Berücksichtigung gelöscht

ein boolesches Flag Erwägen Sie dieses

zum Beispiel zu verhindern,

vor dem try-Block

boolean canDelete = true; 

hinzufügen Wenn Sie eine Ausnahme

canDelete = false; 

und dann in die schließlich überprüfen Sie diese boolean

if (canDelete) 
    delete(remove); 
+0

Vielen Dank für die Hilfe. – Rahulrr2602

Verwandte Themen