gpt4 book ai didi

java - 验证下载是否正确

转载 作者:行者123 更新时间:2023-12-02 05:56:52 26 4
gpt4 key购买 nike

在我的 Android 应用程序中,我从互联网上下载了一些照片。如何验证网络上的图像是否已正确下载?我想过检查我刚刚写在 SD 上的文件大小是否大于零,但我不知道这是否足够。这是我的代码

    String filename =title.replace(" ","")+j+".nomedia";
File destination = new File(MyApplication.getPhotoStorage() ,filename);


URL url = new URL (url_image);

InputStream is = url.openStream();
OutputStream os = new FileOutputStream(destination);


byte[] b = new byte[2048];
int length;

while ((length = is.read(b)) != -1) {
os.write(b, 0, length);
}

is.close();
os.close();
localPhotosUrl.add(destination.getAbsolutePath());

最佳答案

我能想到的唯一可能性是比较文件校验和。因此,服务器必须为其提供的文件提供校验和。然后,您将下载文件和校验和,在本地生成下载文件的校验和,然后将下载的校验和与生成的进行比较。校验和可以使用 MD5 等生成,但也有其他哈希算法。

这里展示了如何在 Java 中生成文件的 MD5 校验和,而无需太多开销:Getting a File's MD5 Checksum in Java

对于您的代码,它将像这样应用:

String filename =title.replace(" ","")+j+".nomedia";
File destination = new File(MyApplication.getPhotoStorage() ,filename);


URL url = new URL (url_image);

OutputStream os = new FileOutputStream(destination);

MessageDigest md = MessageDigest.getInstance("MD5");
try (InputStream is = url.openStream()) {
DigestInputStream dis = new DigestInputStream(is, md);
byte[] b = new byte[2048];
int length;

while ((length = dis.read(b)) != -1) {
os.write(b, 0, length);
}
}

byte[] digest = md.digest();

os.close();
localPhotosUrl.add(destination.getAbsolutePath());

关于java - 验证下载是否正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23006393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com