昨天联调某接口时发现一个的Bug,还好很快找到原因并紧急修复了。
某文件A.tar.gz使用apache commons-compress计算的MD5值:
FileReader fr= new FileReader(tarFile);
String md5 = DigestUtils.md5Hex(IOUtils.toByteArray(fr));
IOUtils.closeQuietly(fr);
System.out.println("MD5:"+md5);
与使用命令:
md5sum A.tar.gz
后显示的MD5值竟然不一样。
话说当时还真就奇怪了,难道commons compress有Bug?
其实不然。
问题是出在了FileReader上:Reader是按字符读取文件,而InputStream是按字节读取文件。此处是压缩文件而不是文本文件,使用Reader读取后计算的MD5值是错误的。改成这样:
FileInputStream fis= new FileInputStream(tarFile);
String md5 = DigestUtils.md5Hex(IOUtils.toByteArray(fis));
IOUtils.closeQuietly(fis);
System.out.println("MD5:"+md5);
这样再和md5sum做比较,发现结果就完全相同了。
希望对大家有所帮助。
分享到:
相关推荐
首先,检查环境变量和系统路径是诊断问题的一个常见步骤。环境变量是操作系统用来指定运行环境的一些参数,例如系统路径告诉操作系统在哪里查找可执行文件。如果环境变量设置不正确,尤其是那些指向Python解释器和...
最后,一个良好的软件系统不仅仅是在技术上能够有效地处理异常,还应该在用户界面上给予用户合理的反馈。如果异常会影响到用户的操作,应当以用户友好的方式提示用户错误信息,并给出解决问题的建议或者备选方案。...
在代码处理方面,虽然异常的具体原因和场景可能各不相同,难以给出一个通用的解决方案,但是开发者可以在代码中加入异常处理逻辑。例如,使用try-catch结构捕获并处理GpuFailureException异常,记录错误信息,并尝试...
异常处理是一个重要环节,在Java开发中,通过try-catch语句块可以捕获和处理`VirtualMachineFailureException`异常。代码示例表明,开发者应在可能发生异常的代码周围添加try-catch结构,并在catch块中编写异常处理...
操作系统崩溃异常(OperatingSystemCrashException)是计算机系统中较为严重的一类问题,通常表现为系统异常停止运行或者响应,导致用户无法继续正常使用计算机。这种情况可能是由于硬件故障、驱动程序错误或者操作...
在嵌入式系统和单片机开发过程中,尤其是在使用ARM Cortex-M系列微控制器时,开发者可能会遇到一种特定的异常错误,即Floating Point Unit Exception,简称FPU异常。这种异常通常发生在微控制器执行浮点运算时,由于...
2. **README.md**:这是一个Markdown格式的文件,通常包含项目简介、安装指南、使用方法等信息,是了解项目用途和如何参与的入口。 3. **bin**:这是一个目录,通常包含可执行文件或脚本,这些文件可能是项目的...
总的来说,mypy-boto3-machinelearning-1.18.34是Python开发者在处理AWS Machine Learning任务时的一个有力工具,它将静态类型检查的优势引入到AWS服务的使用中,提升了开发效率和代码质量。通过深入理解和合理使用...