0
erlang에 vala의 함수가 zip:list_dir
과 같은가요? libgsf를 찾았지만 zip 파일을 압축 해제하고 싶지 않습니다.Vala : 압축 해제하지 않고 압축 파일의 모든 파일 이름을 검색하는 방법은 무엇입니까?
erlang에 vala의 함수가 zip:list_dir
과 같은가요? libgsf를 찾았지만 zip 파일을 압축 해제하고 싶지 않습니다.Vala : 압축 해제하지 않고 압축 파일의 모든 파일 이름을 검색하는 방법은 무엇입니까?
libarchive
을 사용할 수 있습니다.
void check_ok (Archive.Result r) throws IOError {
if (r == Archive.Result.OK)
return;
if (r == Archive.Result.WARN)
return;
throw new IOError.FAILED ("libarchive returned an error");
}
int main() {
try {
var a = new Archive.Read();
check_ok (a.support_filter_all());
check_ok (a.support_format_all());
check_ok (a.open_filename ("archive.zip", 10240));
unowned Archive.Entry entry;
while (a.next_header (out entry) == Archive.Result.OK) {
stdout.printf ("%s\n", entry.pathname());
a.read_data_skip();
}
}
catch (IOError e) {
stderr.printf (e.message + "\n");
return 1;
}
return 0;
}
valac ListZip.vala --pkg libarchive --pkg gio-2.0
으로 컴파일하십시오.
IOError
errordomain에만 GIO가 필요합니다. 실제로는 조작이 실패한 설명 메시지를 사용하여 check_ok
메소드를 확장하려고합니다.
zip 파일 만 허용하도록 libarchive를 제한 할 수도 있습니다. example from the upstream wiki을 번역했습니다.
GCC는'archive_read_finish'가 더 이상 사용되지 않을 것이라고 경고했습니다. 경고를 없애기 위해 내가 할 수있는 일이 있습니까? – huron
libarchive.vapi 파일을 업데이트해야하며 archive_read_finish 함수의 이름이 libarchive 3.0.2에서 archive_free로 바뀌 었습니다. Vala 개발자가이를 수정할 수 있도록 https://bugzilla.gnome.org/ (product Vala)에 신고 할 수 있습니다. –
libarchive devs가 archive_read_finish를 제거하지 않는 한 계속해서 vapi를 사용할 수 있습니다. –