gpt4 book ai didi

Java,关闭FileWriter更改文件MD5值

转载 作者:太空宇宙 更新时间:2023-11-04 11:06:23 25 4
gpt4 key购买 nike

在创建包含某些内容的文件后,我需要创建一个 MD5 文件。

但是我发现一个问题,尽管我没有更改文件本身,但文件的 md5 值与实际文件值不同。

最后我发现,如果我在 try-with-resources block 内创建 md5 文件,md5 会发生变化。我写了下面的代码片段来验证我的猜测

public static void main(String[] args) throws IOException {
String filePath = "D:\\push\\file\\imei2device\\imei2device.txt";
File f = new File(filePath);
try (FileWriter fw = new FileWriter(f);){
fw.write("something");
//createMD5File(filePath);// create here, NOT OK!

}
catch (Exception ex) {
ex.printStackTrace();
}
createMD5File(filePath);// create here, ok
logger.info("create md5 file successfully, notModified: {}", MappedFileReader.isFileNotModified(filePath));
}

当我将createMD5File放在两个不同的地方时,我会发现MD5值不同。

我怀疑当 FileWriter 关闭时文件本身是不同的,比如 EOF?

最佳答案

没有。磁盘上没有显式的 EOF,您需要等待文件完成写入,然后才能尝试使用文件内容计算 MD5(即在计算总和之前 flush() 文件)。或者,根据您从内存写入的内容计算哈希值(比从磁盘重新读取数据更快)。

关于Java,关闭FileWriter更改文件MD5值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46438350/

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