Проверьте успешную копию файла - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь создать приложение для управления файлами в Android.

Я хочу предоставить пользователю возможность перемещать свои файлы. Итак, сначала я копирую файлы, затем удаляю файл, если ошибки нет.

Это код, который я использую для копирования файлов

public static boolean copy(File copy, String directory, Context con) {
   static FileInputStream inStream = null;
   static OutputStream outStream = null;
   DocumentFile dir = getDocumentFileIfAllowedToWrite(new File(directory), con);
   String mime = "";
   DocumentFile copy1 = dir.createFile(mime, copy.getName());

   try {
      inStream = new FileInputStream(copy);
      outStream = con.getContentResolver().openOutputStream(copy1.getUri());
      byte[] buffer = new byte[16384];
      int bytesRead;
      while ((bytesRead = inStream.read(buffer)) != -1) {
         outStream.write(buffer, 0, bytesRead);
      }
   }
   catch (FileNotFoundException e) {
      e.printStackTrace();
   } catch (IOException e) {
      e.printStackTrace();
   } finally {
      try {
         inStream.close();
         outStream.close();
         return true;
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
   return false;
}

Но на одном из моих устройств файлы просто удаляются без копирования.

Итак, я думаю, что я проверю длину файла на SourceFile.length() и длину DestinationFile.length(), если оба они одинаковы или нет. Если они одинаковы, я удалю SourceFile.

Самый эффективный способ проверить это, не проверяя MD5 файла? Кроме того, каковы шансы, что передача файла будет неполной / поврежденной и при этом длина будет такой же?

...