IRC에서 말씀 드린대로 복사하려는 각 파일에 대해 GLib.File.copy
을 호출하여 직접 할 수있는 기능을 작성할 수 있습니다.
public bool copy_recursive (GLib.File src, GLib.File dest, GLib.FileCopyFlags flags = GLib.FileCopyFlags.NONE, GLib.Cancellable? cancellable = null) throws GLib.Error {
GLib.FileType src_type = src.query_file_type (GLib.FileQueryInfoFlags.NONE, cancellable);
if (src_type == GLib.FileType.DIRECTORY) {
dest.make_directory (cancellable);
src.copy_attributes (dest, flags, cancellable);
string src_path = src.get_path();
string dest_path = dest.get_path();
GLib.FileEnumerator enumerator = src.enumerate_children (GLib.FileAttribute.STANDARD_NAME, GLib.FileQueryInfoFlags.NONE, cancellable);
for (GLib.FileInfo? info = enumerator.next_file (cancellable) ; info != null ; info = enumerator.next_file (cancellable)) {
copy_recursive (
GLib.File.new_for_path (GLib.Path.build_filename (src_path, info.get_name())),
GLib.File.new_for_path (GLib.Path.build_filename (dest_path, info.get_name())),
flags,
cancellable);
}
} else if (src_type == GLib.FileType.REGULAR) {
src.copy (dest, flags, cancellable);
}
return true;
}
또한, 당신이 대신 Posix.system의 GLib.Process의 기능 중 하나를 사용할 수 있음을 주목할 필요가 : 여기에 기본 예제입니다.