suchen
HeimJavajavaLernprogrammSo ermitteln Sie den Dateityp in Java

1. Bestimmen Sie anhand der Dateierweiterung

  • Vorteile: Schnelle Geschwindigkeit, einfacher Code

  • Nachteile: Der tatsächliche Dateityp kann nicht ermittelt werden, z. B. einige gefälschte Dateien oder Dateien ohne Suffixnamen

2. Bestimmen Sie anhand der ersten paar Zeichen im Dateistream

Vorteile: Kann den tatsächlichen Dateityp bestimmen

Nachteile: Langsame Geschwindigkeit, komplexer Code

Ich werde jede Methode unten besprechen , gehen Sie zum Testen und überprüfen Sie, die Testdatei lautet wie folgt:

  1. test.png: Erstellen Sie eine normale PNG-Datei mit dem Erweiterungsnamen test.png

  2. test.doc: Kopieren Sie die obige test.png-Datei und Ändern Sie es. Der Dateiname lautet test.doc

1. Beginnend mit Files.probeContentType

Java1.7 wird eine Methode zum Auflösen von MIME-Typen bereitgestellt. 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); }

Ergebnis:

So ermitteln Sie den Dateityp in Java

Diese Methode nutzt die installierte FileTypeDetector-Implementierung, um MIME-Typen zu erkennen. Es ruft den probeContentType jeder Implementierung auf, um den Typ aufzulösen.

Die Standardimplementierung ist jedoch betriebssystemspezifisch und kann je nach verwendetem Betriebssystem fehlschlagen.

Fazit: Beurteilung anhand der Dateierweiterung.

2. Verwendung von URLConnection

URLConnection bietet mehrere APIs zum Erkennen des MIME-Typs von Dateien.

2.1 Verwendung von getContentType

public void test(){     File file = new File("d:/test.png");     URLConnection connection = file.toURL().openConnection();     String mimeType = connection.getContentType(); }

Ergebnis:

So ermitteln Sie den Dateityp in Java

Schlussfolgerung: Beurteilung anhand der ersten paar Zeichen im Dateistream. Der Hauptnachteil dieser Methode besteht jedoch darin, dass sie den tatsächlichen Dateityp ermitteln kann, da sie sehr langsam ist.

2.2 GuessContentTypeFromName verwenden

public void test(){     File file = new File("d:/test.png");     String mimeType = URLConnection.guessContentTypeFromName(file.getName()); }

Ergebnis:

So ermitteln Sie den Dateityp in Java

Diese Methode verwendet die interne FileNameMap, um den MIME-Typ zu bestimmen.

Fazit: Der Dateierweiterung nach zu urteilen.

2.3 Verwendung von „gueContentTypeFromStream“

public static void test() throws Exception {     FileInputStream inputFile = new FileInputStream("d:/test.doc");     String mimeType = URLConnection.guessContentTypeFromStream(new BufferedInputStream(inputFile));     System.out.println(mimeType); }

Ergebnis:

So ermitteln Sie den Dateityp in Java

Schlussfolgerung: Beurteilung anhand der ersten paar Zeichen im Dateistream.

2.4 Verwendung von getFileNameMap

Eine schnellere Möglichkeit, den MIME-Typ mithilfe von URLConnection abzurufen, ist die Verwendung der getFileNameMap()-Methode:

public void test(){     File file = new File("d:/test.png");     FileNameMap fileNameMap = URLConnection.getFileNameMap();     String mimeType = fileNameMap.getContentTypeFor(file.getName()); }

Ergebnis:

So ermitteln Sie den Dateityp in Java

Diese Methode gibt eine Tabelle der verwendeten MIME-Typen zurück von allen Instanzen von URLConnection . Diese Tabelle wird dann zum Parsen der Eingabedateitypen verwendet.

Die integrierte Tabelle der MIME-Typen ist in Bezug auf URLConnection sehr begrenzt.

Standardmäßig verwendet diese Klasse die Datei content-types.properties und ihr Verzeichnis ist JRE_HOME/lib. Wir können es jedoch erweitern, indem wir mithilfe der Eigenschaft content.types.user.table eine benutzerspezifische Tabelle angeben:

System.setProperty("content.types.user.table","<path-to-file>");</path-to-file>

Fazit: Gemessen an der Dateierweiterung.

3. Verwendung von MimeTypesFileTypeMap

Diese Klasse wird mit Java 6 geliefert und ist daher sehr praktisch, wenn JDK 1.6 verwendet wird.

public void test() {     File file = new File("product.png");     MimetypesFileTypeMap fileTypeMap = new MimetypesFileTypeMap();     String mimeType = fileTypeMap.getContentType(file.getName()); }

Ergebnis:

So ermitteln Sie den Dateityp in Java

Hier können wir den Dateinamen oder die Dateiinstanz selbst als Parameter an die Funktion übergeben. Allerdings rufen Funktionen, die eine File-Instanz als Argument verwenden, intern eine überladene Methode auf, die einen Dateinamen als Argument akzeptiert.

Intern sucht diese Methode nach einer Datei namens mime.types zur Typauflösung. Es ist wichtig zu beachten, dass diese Methode in einer bestimmten Reihenfolge nach Dateien sucht:

  1. Hongmeng Official Strategic Cooperation and Co-construction – HarmonyOS Technology Community

  2. Fügen Sie der MimetypesFileTypeMap-Instanz

  3. programmgesteuert Einträge hinzu Home-Verzeichnis des Benutzers mime.types

  4. Ressource mit dem Namen META-INF/mime.types

  5. Ressource mit dem Namen META-INF/mimetypes.default (normalerweise nur in der Datei „activation.jar“ zu finden)

Wenn jedoch Wenn die Datei nicht gefunden wird, wird als Antwort application/octet-stream zurückgegeben.

Fazit: Beurteilung anhand der Dateierweiterung.

4. Verwendung von jmimemagicjMimeMagic

ist eine eingeschränkte Lizenzbibliothek, die wir verwenden können, um den MIME-Typ einer Datei abzurufen.

Maven-Abhängigkeiten konfigurieren:

<dependency>     <groupid>net.sf.jmimemagic</groupid>     <artifactid>jmimemagic</artifactid>     <version>0.1.5</version> </dependency>

Als nächstes werden wir untersuchen, wie diese Bibliothek verwendet wird:

public void test() {         File file = new File("d:/test.doc");         MagicMatch match = Magic.getMagicMatch(file, false);         System.out.println(match.getMimeType()); }

Diese Bibliothek kann Datenströme verarbeiten und erfordert daher keine Dateien im Dateisystem.

Ergebnis:

So ermitteln Sie den Dateityp in Java

结论:根据文件流中前几个字符判断。

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); }

结果

So ermitteln Sie den Dateityp in Java

结论:根据文件流中前几个字符判断。

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie den Dateityp in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:亿速云. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?Mar 17, 2025 pm 05:46 PM

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement?Mar 17, 2025 pm 05:45 PM

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?Mar 17, 2025 pm 05:44 PM

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?Mar 17, 2025 pm 05:43 PM

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?Mar 17, 2025 pm 05:35 PM

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen