2007-01-02

Glib读取文本文件

gnotepad 开始第3天,遇到些许困难做不下去了(主要是undo的实现),于是打算下一个简单点的XFCE的mousepad源代码看看(开源软件的好处 :))。
费尽千辛万苦,以最大1K/s的速度终于下载下来mousepad的源码——台湾地震断网后访问国外的网站真是困难,光打开个页面找到mousepad就花费了我1个多小时 -_-|||

哈,下载下来之后惊奇的发现我的gnotepad和mousepad的源码结构出奇的相似 :D,这也难怪,都是参照Win的notepad,以GTK+为基础做的。。。
看了之后才发现Glib中还有 g_file_get_contents() 可以获取文件内容的,这比我原来用 g_fopen + fread 好多了(我就说Glib中怎么有g_fopen怎么没得读写文件的函数呢?)
gboolean g_file_get_contents (const gchar *filename, gchar **contents, gsize *length, GError **error);
gboolean g_file_set_contents (const gchar *filename, gchar *contents, gssize length, GError **error);
[Since v2.8]
不过写文件他还是用的 fopen + fputs,和我的差不多。
之所以不用g_file_set_contents()是因为length不好确定(特别是在Muti-byte-char和ASCII混编时,用下面的更简便)
还有我想要的编码转换部分,g_convert()(不过最后还是决定不用编码转换了)
呵呵,也找到了我正需要的modify部分的代码和undo,redo的代码,还是需要研究一下。
//EOF

0 comments: