2017-07-21 89 views
0

我想將一些文件複製到SD卡然後刪除它們。但很多時候這些文件不會被複制,只會被刪除。文件被刪除而未被複制

而且很多時候FileInputStream爲空,因爲我正在檢查是否存在或不存在必須傳輸的文件,以及它是否可寫。

這是我使用移動文件

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

閱讀本https://開頭計算器.com/a/32652909/3682535 – rupinderjeet

+0

@rupinderjeet謝謝。我讀了答案,但找不到解決我的問題。 – Rahulrr2602

回答

1

如果你有一個例外,在被刪除不考慮刪除

考慮增加一個布爾標誌,以防止這種

例如

try塊添加

boolean canDelete = true; 

之前,如果你有一個例外設置

canDelete = false; 

,然後在最後檢查這個布爾

if (canDelete) 
    delete(remove); 
+0

非常感謝您的幫助。 – Rahulrr2602