我正在尝试在 Android 应用程序中复制/复制 DocumentFile,但在检查创建的副本时,它似乎与原始文件并不完全相同(这导致了问题,因为我需要对文件进行 MD5 检查)下次调用副本时这两个文件,以避免覆盖相同的文件)。
流程如下:
用户从 ACTION_OPEN_DOCUMENT_TREE 选择文件
获取源文件类型
目标位置的新文档文件已初始化
第一个文件的内容复制到第二个文件中
初始阶段通过以下代码完成:
// 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 哈希值已完全改变
我的复制代码是否有问题导致文件略有更改?
提前致谢。
狐的传说
相关分类