So 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:
test.png: Erstellen Sie eine normale PNG-Datei mit dem Erweiterungsnamen test.png
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:
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:
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:
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:
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:
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:
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:
Hongmeng Official Strategic Cooperation and Co-construction – HarmonyOS Technology Community
Fügen Sie der MimetypesFileTypeMap-Instanz
programmgesteuert Einträge hinzu Home-Verzeichnis des Benutzers mime.types
Ressource mit dem Namen META-INF/mime.types
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:
结论:根据文件流中前几个字符判断。
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); }
结果:
结论:根据文件流中前几个字符判断。
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Java ist eine beliebte Programmiersprache, die sowohl von Anfängern als auch von erfahrenen Entwicklern erlernt werden kann. Dieses Tutorial beginnt mit grundlegenden Konzepten und geht dann weiter zu fortgeschrittenen Themen. Nach der Installation des Java Development Kit können Sie das Programmieren üben, indem Sie ein einfaches „Hello, World!“-Programm erstellen. Nachdem Sie den Code verstanden haben, verwenden Sie die Eingabeaufforderung, um das Programm zu kompilieren und auszuführen. Auf der Konsole wird „Hello, World!“ ausgegeben. Mit dem Erlernen von Java beginnt Ihre Programmierreise, und wenn Sie Ihre Kenntnisse vertiefen, können Sie komplexere Anwendungen erstellen.
