Я пытаюсь скопировать / продублировать DocumentFile в приложении Android, но после проверки созданного дубликата он не выглядит точно так же, как оригинал (что вызывает проблему, потому что мне нужно сделатьMD5 проверяет оба файла при следующем вызове копии, чтобы избежать перезаписи одних и тех же файлов).
Процесс выглядит следующим образом:
- Пользователь выбирает файл изACTION_OPEN_DOCUMENT_TREE
- Получен тип исходного файла
- Инициализирован новый DocumentFile в целевом местоположении
- Содержимое первого файла дублируется во второй файл
начальные этапы выполняются с помощью следующего кода:
// Get the source file's type
String sourceFileType = MimeTypeMap.getSingleton().getExtensionFromMimeType(contextRef.getContentResolver().getType(file.getUri()));
// Create the new (empty) file
DocumentFile newFile = targetLocation.createFile(sourceFileType, file.getName());
// Copy the file
CopyBufferedFile(new BufferedInputStream(contextRef.getContentResolver().openInputStream(file.getUri())), new BufferedOutputStream(contextRef.getContentResolver().openOutputStream(newFile.getUri())));
Основной процесс копирования выполняется с использованием следующего фрагмента:
void CopyBufferedFile(BufferedInputStream bufferedInputStream, BufferedOutputStream bufferedOutputStream)
{
// Duplicate the contents of the temporary local File to the DocumentFile
try
{
byte[] buf = new byte[1024];
bufferedInputStream.read(buf);
do
{
bufferedOutputStream.write(buf);
}
while(bufferedInputStream.read(buf) != -1);
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
if (bufferedInputStream != null) bufferedInputStream.close();
if (bufferedOutputStream != null) bufferedOutputStream.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Проблема, с которой я сталкиваюсь, заключается в том, что, хотяФайл успешно копируется и может использоваться (это изображение кота, и это все еще изображение кота в пункте назначения), оно немного отличается.
- Размер файла изменился с 2261840 до 2262016 (+176)
- Хэш MD5 полностью изменился
Что-то не так с моим кодом копирования, из-за которого файлнемного измениться?
Заранее спасибо.