Vala: 运算后释放 GChecksum 得到正确的 MD5 hash
Vala: Free GChecksum after operation to get a correct MD5 hash
我正在学习 Vala,我正在尝试构建一个 Gtk+ Gui 来输出文件的 MD5 散列。
目前我正在使用 valadoc.org 来编写我的应用程序,我正在使用 GLib.Checksum 来计算校验和。 GLib.Checksum 处理 MD5、SHA1、SHA256 和 SHA512(在文档中找到)。
所以我使用文档中的代码来计算输入文件路径的哈希值。我发现 Vala 没有自动释放 GChecksum,我也不知道如何手动释放它。
感谢您的帮助。
这是我的 Vala 代码:
private string HashSum( string path, string hash){
Checksum checksum = new Checksum(ChecksumType.MD5);
FileStream stream = FileStream.open(path, "rb");
//var stream = File.new_for_path(path).read();
uint8 fbuf[100];
size_t size;
while ((size = stream.read(fbuf)) > 0){
checksum.update(fbuf, size);
}
unowned string digest = checksum.get_string();
stdout.printf("%s: %s\n", path, digest);
return @"$hash hash: $digest";
}
我想问题出在我的 Valac 版本上。我将它升级到我在 Ubuntu 存储库中找到的最后一个版本:Vala 0.30.0。现在输出是正确的。
我正在学习 Vala,我正在尝试构建一个 Gtk+ Gui 来输出文件的 MD5 散列。 目前我正在使用 valadoc.org 来编写我的应用程序,我正在使用 GLib.Checksum 来计算校验和。 GLib.Checksum 处理 MD5、SHA1、SHA256 和 SHA512(在文档中找到)。 所以我使用文档中的代码来计算输入文件路径的哈希值。我发现 Vala 没有自动释放 GChecksum,我也不知道如何手动释放它。
感谢您的帮助。
这是我的 Vala 代码:
private string HashSum( string path, string hash){
Checksum checksum = new Checksum(ChecksumType.MD5);
FileStream stream = FileStream.open(path, "rb");
//var stream = File.new_for_path(path).read();
uint8 fbuf[100];
size_t size;
while ((size = stream.read(fbuf)) > 0){
checksum.update(fbuf, size);
}
unowned string digest = checksum.get_string();
stdout.printf("%s: %s\n", path, digest);
return @"$hash hash: $digest";
}
我想问题出在我的 Valac 版本上。我将它升级到我在 Ubuntu 存储库中找到的最后一个版本:Vala 0.30.0。现在输出是正确的。