2017-07-21 2 views
0

J'essaie de copier des fichiers sur la carte SD, puis de les supprimer. Mais plusieurs fois les fichiers ne sont pas copiés et ne sont supprimés.Fichier supprimé sans être copié

Et aussi de nombreuses fois le FileInputStream est nulle où que je vérifie si le fichier qui doit être transféré existe ou non et aussi s'il est inscriptible ou non.

Ce code j'utilise pour déplacer un fichier

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(); 
         } 
        } 
       } 
    } 

Je transfère plusieurs fichiers à la fois, donc je suis en utilisant ce code à l'intérieur d'une Async tâche.

Toute aide serait vraiment reconnaissante.

+0

lire ce https: // stackoverflow .com/a/32652909/3682535 – rupinderjeet

+0

@rupinderjeet Merci. J'ai lu la réponse mais je n'ai pas trouvé la solution à mon problème. – Rahulrr2602

Répondre

1

Si vous avez une exception, le supprimer est supprimé sans tenir compte

envisager d'ajouter un drapeau booléen pour éviter ce

par exemple

avant que le bloc try ajouter

boolean canDelete = true; 

Si vous avez une exception prévue

canDelete = false; 

puis en enfin vérifier ce booléen

if (canDelete) 
    delete(remove); 
+0

Merci beaucoup pour votre aide. – Rahulrr2602