Я пытаюсь создать приложение для управления файлами в 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 файла? Кроме того, каковы шансы, что передача файла будет неполной / поврежденной и при этом длина будет такой же?