1. ファイル拡張子に基づいて決定します
利点: 高速、シンプルなコード
-
欠点: 一部の偽のファイルやサフィックス名のないファイルなど、実際のファイルの種類を判断できません
2。ファイル フロー 最初の数文字を決定する
利点: 実際のファイル タイプを決定できる
欠点: 速度が遅く、コードが複雑
以下では、各メソッドをテストして検証します。テスト ファイルは次のとおりです。
- ##test.png: 拡張子名が test.png# の通常の png ファイルを作成します。 ##test.doc: 上記の test.png ファイルをコピーし、ファイル名を test.doc
Java 1.7 以降、MIME タイプを解決するメソッドが提供されています。 Files.probeContentType:
public static void test() throws IOException { Path path = new File("d:/test.png").toPath(); String mimeType = Files.probeContentType(path); System.out.println(mimeType); }結果:
#このメソッドは、インストールされている FileTypeDetector 実装を利用して MIME タイプを検出します。各実装のprobeContentTypeを呼び出してタイプを解決します。
ただし、デフォルトの実装はオペレーティング システム固有であり、使用しているオペレーティング システムによっては失敗する可能性があります。
#結論: ファイル拡張子に基づいて判断してください。
2. URLConnection の使用
URLConnection は、ファイルの MIME タイプを検出するための API をいくつか提供します。
2.1 getContentType の使用public void test(){ File file = new File("d:/test.png"); URLConnection connection = file.toURL().openConnection(); String mimeType = connection.getContentType(); }
結果:
##結論: ジャッジファイル ストリームの最初の数文字に基づきます。実際のファイルの種類を特定できますが、この方法の主な欠点は非常に遅いことです。
public void test(){ File file = new File("d:/test.png"); String mimeType = URLConnection.guessContentTypeFromName(file.getName()); }
の使用結果:
##このメソッドは、内部 FileNameMap を使用して MIME タイプを決定します。
#結論: ファイル拡張子に基づいて判断してください。
#
public static void test() throws Exception { FileInputStream inputFile = new FileInputStream("d:/test.doc"); String mimeType = URLConnection.guessContentTypeFromStream(new BufferedInputStream(inputFile)); System.out.println(mimeType); }#Result
:
# #結論: ファイル ストリームの最初の数文字に基づいて判断してください。
2.4 getFileNameMap の使用
URLConnection を使用して MIME タイプを取得するより迅速な方法は、getFileNameMap() メソッドを使用することです:
public void test(){ File file = new File("d:/test.png"); FileNameMap fileNameMap = URLConnection.getFileNameMap(); String mimeType = fileNameMap.getContentTypeFor(file.getName()); }
結果 :
このメソッドは、URLConnection のすべてのインスタンスで使用される MIME タイプ テーブルを返します。このテーブルは、入力ファイルの種類を解析するために使用されます。
MIME タイプの組み込みテーブルは、URLConnection に関しては非常に限られています。
デフォルトでは、このクラスは content-types.properties ファイルを使用し、そのディレクトリは JRE_HOME/lib です。ただし、content.types.user.table プロパティを使用してユーザー固有のテーブルを指定することで、これを拡張できます。 System.setProperty("content.types.user.table","<path-to-file>");</path-to-file>
3. MimeTypesFileTypeMap を使用する
このクラスは Java 6 に付属しているため、JDK 1.6 を使用する場合に非常に便利です。public void test() { File file = new File("product.png"); MimetypesFileTypeMap fileTypeMap = new MimetypesFileTypeMap(); String mimeType = fileTypeMap.getContentType(file.getName()); }結果:
ここで、ファイル名またはファイル インスタンス自体をパラメーターとして関数に渡すことができます。ただし、File インスタンスを引数として受け取る関数は、ファイル名を引数として受け取るオーバーロードされたメソッドを内部的に呼び出します。
このメソッドは内部的に、型解決のために mime.types という名前のファイルを探します。この方法は特定の順序でファイルを検索することに注意することが重要です:Hongmeng 公式戦略的協力と共同構築 - HarmonyOS Technology Community
mime.types
- という名前のエントリを追加します。ホームディレクトリ META-INF/mimetypes.default という名前のリソース (通常は activity.jar ファイル内でのみ見つかります)
- ただし、ファイルが見つからない場合は、application/octet が返されます。 - 応答のストリーム。
- 結論: ファイル拡張子に基づいて判断してください。 4. jmimemagicjMimeMagic
- の使用は、ファイルの MIME タイプを取得するために使用できる制限付きライセンス ライブラリです。
- Maven の依存関係を構成する:
<dependency> <groupid>net.sf.jmimemagic</groupid> <artifactid>jmimemagic</artifactid> <version>0.1.5</version> </dependency>
次に、このライブラリの使用方法を検討します:
public void test() { File file = new File("d:/test.doc"); MagicMatch match = Magic.getMagicMatch(file, false); System.out.println(match.getMimeType()); }
结论:根据文件流中前几个字符判断。
5. 使用Apache TikaApache Tika
是一个工具集,可检测并从各种文件中提取元数据和文本。它具有丰富而强大的API,并带有[tika-core],我们可以利用它来检测文件的MIME类型。
配置Maven依赖:
<dependency> <groupid>org.apache.tika</groupid> <artifactid>tika-core</artifactid> <version>1.18</version> </dependency>
接下来,我们将使用detect()方法来解析类型:
public void whenUsingTika_thenSuccess() { File file = new File("d:/test.doc"); Tika tika = new Tika(); String mimeType = tika.detect(file); }
结果:
结论:根据文件流中前几个字符判断。
以上がJavaでファイルタイプを判断する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Javaは、Java Virtual Machines(JVMS)とBytecodeに依存している「Write and Averywherewherewherewherewherewherewhere」の哲学のために、プラットフォームに依存しません。 1)Javaコードは、JVMによって解釈されるか、地元でその場でコンパイルされたBytecodeにコンパイルされます。 2)ライブラリの依存関係、パフォーマンスの違い、環境構成に注意してください。 3)標準ライブラリを使用して、クロスプラットフォームのテストとバージョン管理がプラットフォームの独立性を確保するためのベストプラクティスです。

java'splatformindepenceisnotsimple; itinvolvescomplexities.1)jvmcompatibilitymustbeensuredacrosplatforms.2)nativeLibrariesandsystemCallSneedCarefulHandling.3)依存症の依存症の依存症と依存症の依存症と依存関係の増加 - プラットフォームのパフォーマンス

java'splatformentedentencebenefitswebapplicationsbyAllowingCodeTorunOnySystemwithajvm、simpledifyifieddeploymentandscaling.itenables:1)easydeploymentddifferentservers、2)Seamlessscalingacroscloudplatforms、および3)deminvermentementmentmentmentmentementtodeploymentpoce

jvmistheruntimeenvironment forexecutingjavabytecode、Curivalforjavaの「writeonce、runanywhere」capability.itmanagesmemory、executessuressecurity、makingestessentionentionalforjavadevadedertionserstunterstanderforeffication devitivationdevation

JavareMainsAtopChoiceFordevelopersDuetoitsPlatformEndepentence、Object-OrientedDesign、stryngting、automaticmemorymanagement、およびcomprehensivestandardlibrary.thesefeaturesmavaversatilatileandpowerful、sustableforawiderangeofplications、daspitesomech

java'splatformentencemeansdeveloperscancancodecodeonceanddevicewithoutrocompilling.cancodecodecodecodecodecodecodecodecodecodecodecode compilling

JVMをセットアップするには、次の手順に従う必要があります。1)JDKをダウンロードしてインストールする、2)環境変数を設定する、3)インストールの確認、4)IDEを設定する、5)ランナープログラムをテストします。 JVMのセットアップは、単に機能するだけでなく、メモリの割り当て、ガベージコレクション、パフォーマンスチューニング、エラー処理の最適化を行い、最適な動作を確保することも含まれます。

toensurejavaplatformindopendence、soflowthesesteps:1)compileandrunyourapplicationOnMultiplePlatformsusingDifferentosAndjvversions.2)utilizeci/cdpipelines


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

Dreamweaver Mac版
ビジュアル Web 開発ツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
