2017-07-21 3 views
0

ファイルをSDカードにコピーしてから削除しようとしています。しかし、何度もファイルがコピーされず、削除されるだけです。コピーされずにファイルが削除される

また、何度もFileInputStreamがnullの場合、転送するファイルが存在するかどうか、書き込み可能かどうかを確認しています。

これは私が非同期タスク内でこのコードを使用していますので、私は一度に多くのファイルを転送していたファイル

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

を移動するために使用していますコードです。

本当にありがとうございました。

+0

をチェックしている場合は、tryブロックが

boolean canDelete = true; 

を追加する前に:// stackoverflowの.com/a/32652909/3682535 – rupinderjeet

+0

@rupinderjeetありがとうございました。私は答えを読んだが、私の問題の解決策を見つけることができなかった。 – Rahulrr2602

答えて

1

あなたは例外を持っている場合は、削除を考慮

せずに削除されますが、この

例えばを防ぐために、ブール値のフラグを追加することを検討してください

あなたは例外が

canDelete = false; 

を設定し、その後に最終的にはこのHTTPSを読んで、このブール

if (canDelete) 
    delete(remove); 
+0

ありがとうございました。 – Rahulrr2602

関連する問題