C Programer  - 讨论区

标题:GLib库 File Utilities 模块编程示例

2014年02月08日 星期六 09:17

GLib库 File Utilities 模块提供了操作文件相关的一些API,例如获取文件内容,判断文件是否存在,将文件映射到内存等等。

下面的代码实例结合了上一期的Checksum算法,演示了File Utilities的一些使用方法。

#include <stdio.h>
#include <glib.h>
#include <string.h>
#include <stdlib.h>


int main(int argc,char **argv) {

    if(argc != 3) {
        fprintf(stderr,
        "usage: %s type(md5|sha1|sha256) filename\n",argv[0]);
        return -1;
    }

    GChecksumType type;

    if(strcmp("md5",argv[1]) == 0) {
        type=G_CHECKSUM_MD5;
    } else if (strcmp("sha1",argv[1]) == 0) {
        type=G_CHECKSUM_SHA1;
    } else if (strcmp("sha256",argv[1]) == 0) {
        type=G_CHECKSUM_SHA256;
    } else {
        type=G_CHECKSUM_MD5;
    }
        
    char *filename=argv[2];

    gchar *contents;
    gsize length;

    g_file_get_contents(filename,&contents,&length,NULL);
    char *result=g_compute_checksum_for_data(type,contents,length);
    printf("%s\n",result);

    GMappedFile *mfile;
    mfile=g_mapped_file_new(filename,FALSE,NULL);
    length=g_mapped_file_get_length(mfile);
    contents=g_mapped_file_get_contents(mfile);
    result=g_compute_checksum_for_data(type,contents,length);
    printf("%s\n",result);
    
    g_mapped_file_unref(mfile);

    return 0;
}

参考资料:

https://developer.gnome.org/glib/2.39/glib-File-Utilities.html

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号