0

多くの場合、zip 署名を持つファイルタイプに出くわしますが、それらは圧縮されたアーカイブではないか、単に zip ファイルではありません。一般に、署名から圧縮されたアーカイブのように見えるファイルがありますが、実際にはそれらはカスタム データセットのコンテナにすぎません。

たとえば、.blend ファイルまたは .apk は、アーカイブ ユーティリティで開くことができます。

プログラムによるアプローチでは、新しいファイルタイプの作成とコンテナーとしての zip の使用に関する複雑な部分をすべて回避して、独自の新しいファイルタイプ定義を作成するにはどうすればよいですか?

C/C++ プログラミングでこれに興味があります。


編集:

また、エンコーディングやデータ表現などのプラットフォーム関連の問題を回避するためにコンテナーについて話しているという事実も強調したいと思います。

4

1 に答える 1

1

異なるファイル拡張子を持つzipファイルのようなものをどのように作成するのか疑問に思っていると思います(たとえば、afaikは.APKファイルに使用される戦術です)。

かなり簡単な答えは、他の方法とまったく同じようにこれらの1つを作成し、独自の拡張子を持つファイル名を使用することです。コメントで述べたように、使用できるzipファイルを作成および処理するためのさまざまなライブラリがあります。

このファイルは(APKのように)アーカイブユーティリティで開くことができますが、デフォルトではシステム上の他のアクションに関連付けられています(apkはインストールに関連付けられ、.blendはblenderに関連付けられているため)。

この手法は非常に一般的であり、多くの一般的なアプリケーションファイル形式は、ファイルのzip形式のコレクションと、それらがどのように組み合わされるかを示すいくつかの標準インデックスファイルにすぎません。

また、エンコーディングの問題に関する@JanHudecのコメントにも注意してください。このルートからの脱出はありません。

エンコーディングについて:(これらの問題について、新しい別の質問をすることをお勧めします。ここの多くは、私よりも実践的な知識があります)異種の可能性のあるシステムで、まったく同じデータを取得したいとおっしゃっています。テキストエンコーディングを使用する必要があると思います。Cコードが異なるシステムでコンパイルされた後、型の長さ、配置、または表現が同じであるという保証はありません。したがって、バイナリブロブを単純に書き出すことはあまり信頼できません。テキストエンコーディング用の文字セットを選択するときに可能であり、他のシステムで文字セットを正確に一致させることができます。

于 2012-11-19T15:25:54.690 に答える