5

libarchiveZIPファイルを指定したフォルダに抽出するために使用する例を示すのを手伝ってくれる人はいますか? 提供されているサンプル プログラム ( untar.ctarfilter.cおよびminitar) はすべて、現在の作業ディレクトリにアーカイブを抽出するようです。「このフォルダとその下に抽出する」と言ってlibarchive、プログラムのアクティブなフォルダを壊さないようにする方法はありますか?

主な原因の 1 つは、抽出コードがバックグラウンド スレッドで実行されるため、プログラムの作業ディレクトリを変更すると問題が発生する可能性があることです。また、これは iOS アプリケーション (iPhone、iPad) で使用されます。これは、アプリケーションが書き込むことができるフォルダーにうるさいです。

前もって感謝します。

4

2 に答える 2

9

archive_read_extract を呼び出す前に、各 archive_entry のパス名を書き換えることができます。例えば:

const char* path = archive_entry_pathname( entry );
char newPath[PATH_MAX + 1];
snprintf( newPath, PATH_MAX, "/SomeOtherDirectory/%s", path );
archive_entry_set_pathname( entry, newPath );
于 2011-04-07T17:08:39.883 に答える
0

untar.ccreate_dir()との間で渡されるパス名に使用するパスを追加することで、これを行うように簡単に変更できcreate_file()ますuntar()

untar.clibarchive とは別の、スタンドアロンの解凍プログラムであることに注意してください。

libarchive を使用すると、同じ効果が簡単に得られます。アーカイブを解除するときに、ファイルとディレクトリの作成を完全に制御できます。

于 2010-12-21T03:36:24.857 に答える