我使用了 this stackoverflow discussion中的代码来计算java中文件的校验和。
我对这项工作有点困惑我在我的问题中应用这个如下:
我有一个包含一些数据的文件。我使用
计算了文件中文本的大小 System.out.println(file1content.toString().getBytes().length); the o/p is 4096 bytes
当我尝试执行校验和代码时,我意识到正在读取的字节数是4096 + 12字节,这12个字节是否等于文件名?
我有另一个文件2与file1具有相同的内容(我知道这是肯定的,因为我将文本提取到String并将其与String.equals进行比较)但生成的校验和是不同的。我想知道为什么会这样?
我在这里错过了什么吗?
编辑1:
我正在使用以下循环从文件中读取数据:
InputStream fis = new FileInputStream(filename);
byte[] buffer = new byte[1024];
do {
numRead = fis.read(buffer);
System.out.println(" "+ numRead);
if (numRead > 0) {
complete.update(buffer, 0, numRead);
}
} while (numRead != -1);
fis.close();
numread的输出是:
1024
1024
1024
1024
12
-1
此致 Bhavya
答案 0 :(得分:1)
嗯,我发现了这个bug是什么,我不确定我是否介绍了这个bug或者它是否已经存在。
我意识到从文件中读取的数据不正确,文件的某些部分被多次读取,因此我修改了代码,以便通过指定开始和结束位置从文件中获取数据。
如果有人遇到此问题,请告诉我,我可以为此发布解决方案。
此致