不明なソースから (Java ZipInputStream またはその他のライブラリを使用して) zipfile を読み取る場合、どのエントリが「文字データ」(およびその場合はエンコーディング) または「バイナリ データ」であるかを検出する方法があります。また、バイナリの場合は、その他の情報を特定する方法 (MIME タイプなど)
EDITは、ByteOrderMark (BOM) が zipentries で発生するかどうかを確認します。その場合、特別な操作を行う必要があります。
不明なソースから (Java ZipInputStream またはその他のライブラリを使用して) zipfile を読み取る場合、どのエントリが「文字データ」(およびその場合はエンコーディング) または「バイナリ データ」であるかを検出する方法があります。また、バイナリの場合は、その他の情報を特定する方法 (MIME タイプなど)
EDITは、ByteOrderMark (BOM) が zipentries で発生するかどうかを確認します。その場合、特別な操作を行う必要があります。
基本的には、ファイルの内容を決定するためのヒューリスティックに要約されます。たとえば、テキストファイル(ASCII)の場合、ファイルで使用されているバイト値の範囲を確認することで、かなり適切な推測が可能になるはずですが、これが完全に確実なものになることはありません。
識別したいファイルタイプのクラスを制限するようにしてください。たとえば、「テキストデータ」と「バイナリデータ」を区別するだけで十分ですか。もしそうなら、あなたは検出のためにかなり高い成功率を得ることができるはずです。
UNIXシステムの場合、(ほとんど)コンテンツに基づいてファイルタイプを識別しようとするfileコマンドが常にあります。
おそらく、 /usr/share/file/magicで定義されたルールを適用できる Java コンポーネントを実装します。私はそのようなものを持っているのが大好きです。(基本的に、最初の x バイトを確認できる必要があります。)