从 GnomeVFS 迁移到 GIO
从 GnomeVFS 迁移到 GIO
GnomeVFS 和 GIO 概念的比较
GnomeVFS | GIO |
---|---|
GnomeVFSURI |
GFile |
GnomeVFSFileInfo |
GFileInfo |
GnomeVFSResult |
GError 与 G_IO_ERROR 值 |
GnomeVFSHandle & GnomeVFSAsyncHandle |
GInputStream 或 GOutputStream |
GnomeVFSDirectoryHandle |
GFileEnumerator |
MIME 类型 | 内容类型 |
GnomeVFSMonitor |
GFileMonitor |
GnomeVFSVolumeMonitor |
GVolumeMonitor |
GnomeVFSVolume |
GMount |
GnomeVFSDrive |
GVolume |
- | GDrive |
GnomeVFSContext |
GCancellable |
gnome_vfs_async_cancel() |
g_cancellable_cancel() |
回收站处理
与 gnome-vfs 相比,GIO 中移动到回收站的文件的处理已经发生改变。gnome-vfs 有一个内部回收站实现,该实现早于此 freedesktop.org 桌面回收站 规范,在 GIO 中已实现。存储回收站文件的目录已从 $HOME/.Trash
更改为 $HOME/.local/share/Trash
(或更准确地说是 $XDG_DATA_HOME/Trash
),这意味着需要将 gnome-vfs 移动到回收站的文件迁移到新目录。
在 gnome-vfs 中,在 Nautilus 中实现了提供所有回收站目录的合并视图的 trash://
方案,而回收站处理应用程序必须自行查找并监视所有回收站目录。在 GIO 中,trash://
已移到 gvfs,并且应用程序只需监视该目录
static void
file_changed (GFileMonitor *file_monitor,
GFile *child,
GFile *other_file,
GFileMonitorEvent event_type,
gpointer user_data)
{
switch (event_type)
{
case G_FILE_MONITOR_EVENT_DELETED:
g_print ("'%s' removed from trash\n", g_file_get_basename (child));
break;
case G_FILE_MONITOR_EVENT_CREATED:
g_print ("'%s' added to trash\n", g_file_get_basename (child));
break;
default: ;
}
}
static void
start_monitoring_trash (void)
{
GFile *file;
GFileMonitor *monitor;
file = g_file_new_for_uri ("trash://");
monitor = g_file_monitor_directory (file, 0, NULL, NULL);
g_object_unref (file);
g_signal_connect (monitor, "changed", G_CALLBACK (file_changed), NULL);
/* ... */
}
GIO 公开了有关回收站文件的某些有用元数据。有 trash::orig-path
和 trash::deletion-date
属性。trash://
本身的 standard::icon
属性为在桌面上显示回收站提供了适当的图标。如果你正在使用此图标,请务必监视此属性是否有更改,因为该图标可能会更新以反映回收站的状态。
使用 GIO 将文件移动到回收站要简单得多。只需使用 g_file_trash()
方法,而不是将 gnome_vfs_find_directory()
与 GNOME_VFS_DIRECTORY_KIND_TRASH
结合使用来查找移动回收站文件的目录。
对多个文件进行操作
gnome-vfs 有可怕的 gnome_vfs_xfer_uri_list()
函数,它拥有大量选项,并且一次提供了 cp
、mv
、ln
、mkdir
和 rm
的等效功能。
GIO 提供了一种更简单的异步任务功能,它允许你安排在单独的线程中调用一个函数,确保在创建任务的主上下文中安排更新,以便你可以更新你的用户界面。请参阅:GTask
。
MIME 监视
gnome-vfs 提供了一种通过 GnomeVFSMIMEMonitor
对象监控 mime 类型与默认处理程序之间关联变化的方法。GIO 目前不提供此功能的替代,因为我们尚未找到 GnomeVFSMIMEMonitor
的一个引人注目的用例。如果您认为有此类用例,请 在 GLib 问题追踪器上提交一个问题。