[Java] Holen Sie sich MimeType aus dem Inhalt der Datei mit Apathce Tika [Kotlin]

Was du machen willst

Holen Sie sich den MimeType aus dem Dateiinhalt. MimeType kann aus der Erweiterung der Datei abgeleitet werden. Da es jedoch für Zwecke verwendet wird, die beim Umschreiben problematisch sind, wird es aus dem Dateiinhalt abgerufen.

meint

Verwenden Sie Apache Tika. Das Ergebnis hängt jedoch vom Dateinamen ab, es sei denn, es handelt sich um "TikaInputStream".

Einführungsmethode

Installieren und verwenden Sie Apache Tika Core von Maven. Ich habe "1.21" zur Verifizierung verwendet.

Verifizierungs-Schlüssel

Es ist ein grobes Beispiel, aber es ist ein Beispiel, um MimeType für alle Dateien unter "src / main / resources" abzurufen. Als Randnotiz wird der Typ "org.apache.tika.metadata.Metadata" benannt, weil er den Typ "Metadata" von Kotlin trägt.

Lesen Sie die Datei in Ressourcen und geben Sie MimeType aus


import java.io.File
import org.apache.tika.Tika
import org.apache.tika.io.TikaInputStream
import org.apache.tika.metadata.Metadata as TikaMetadata

fun main() {
    val resourcesDir = File(System.getProperty("user.dir") + "/src/main/resources")

    val metaData = TikaMetadata()
    val tika = Tika()

    resourcesDir.listFiles().map {
        val tikaStream = TikaInputStream.get(it.toURI(), metaData)
        //Die Erweiterung wird zum Sortieren mit lowerCase vereinheitlicht
        it.name.split(".").last().toLowerCase() + " -> " + tika.detect(tikaStream, metaData)
    }.sorted().forEach {
        //Ausgabe nach dem Sortieren
        println(it)
    }
}

Ausführungsergebnis

Dies ist das Ergebnis des Einwerfens der Dateien und Samples, die sich in diesem Bereich befanden, und des Umblätterns. Es kann fast einzigartig genommen werden. Ich habe auch die Erweiterung umgeschrieben und ausprobiert, und es hat ziemlich gut funktioniert.

7z -> application/x-7z-compressed
avi -> video/x-msvideo
docx -> application/vnd.openxmlformats-officedocument.wordprocessingml.document
exe -> application/x-dosexec
flv -> video/x-flv
html -> text/html
jpg -> image/jpeg
jpg -> image/jpeg
m3u -> text/plain
mkv -> video/x-matroska
mkv -> video/x-matroska
mkv -> video/x-matroska
mkv -> video/x-matroska
mov -> video/quicktime
mov -> video/quicktime
mov -> video/quicktime
mov -> video/quicktime
mp3 -> audio/mpeg
mp4 -> video/mp4
mp4 -> video/mp4
mp4 -> video/mp4
mp4 -> video/mp4
mp4 -> video/mp4
mp4 -> video/mp4
mp4 -> video/mp4
mp4 -> video/mp4
mp4 -> video/mp4
mp4 -> video/x-m4v
mpg -> video/mpeg
mpg -> video/mpeg
mpg -> video/mpeg
msi -> application/x-ms-installer
pdf -> application/pdf
png -> image/png
pptx -> application/vnd.openxmlformats-officedocument.presentationml.presentation
svg -> image/svg+xml
ts -> application/octet-stream
vcmf -> application/octet-stream
vob -> video/mpeg
webm -> video/webm
webm -> video/webm
webm -> video/webm
webm -> video/webm
zip -> application/zip

Andere Mittel

Ich habe diesmal Tika verwendet, aber die Methode mit "URLConnection" oder "mime-util" ist wichtig in dem Sinne, dass sie bei der Suche herauskommt. Diese hatten jedoch Schwierigkeiten mit der Erkennungsgenauigkeit und der Fortsetzung der Wartung, so dass ich diesmal Tika als Test verwendete.

Die Seite, auf der ich den Artikel geschrieben habe

Recommended Posts

[Java] Holen Sie sich MimeType aus dem Inhalt der Datei mit Apathce Tika [Kotlin]
[Java] Zeichensatz mit Apathce Tika abrufen / String von Zeichensatz initialisieren [Kotlin]
[Java] Mit Apathce Tika Metadaten aus Dateien abrufen und Breite und Höhe von Bildern / Videos aus Metadaten abrufen [Kotlin]
[Java] Generieren Sie einen Daten-URI aus einer Byte-Zeichenfolge mit Dateiinhalten. [Kotlin]
CI die Architektur von Java / Kotlin-Anwendungen mit ArchUnit
Java-Sprache aus der Sicht von Kotlin und C #
[Java] Holen Sie sich die Datei unabhängig von der Umgebung in das JAR
Kommen Sie zu den Abkürzungen aus den fünf Beispielen für kursive Java-Listen
Ersetzen Sie den Inhalt der Jar-Datei
[Java1.8 +] Mit LocalDate das Datum des nächsten × Tages abrufen
Rufen Sie die öffentliche URL der privaten Datei von Flickr in Java ab
Überschreiben Sie den gleichnamigen Upload mit dem BOX SDK (Java).
So ermitteln Sie die Länge einer Audiodatei mit Java
Holen Sie sich das Ergebnis von POST in Java
Überprüfen Sie den Inhalt des Java-Zertifikatspeichers
Überprüfen Sie den Inhalt der Parameter mit pry
[Java] Ermittelt den Tag eines bestimmten Tages
Anmerkung: [Java] Überprüfen Sie den Inhalt des Verzeichnisses
[Kotlin] Doppelte Dateien löschen [Java]
Formatieren Sie den Inhalt von LocalDate mit DateTimeFormatter
[Java8] Durchsuchen Sie das Verzeichnis und holen Sie sich die Datei
[Java] Ermitteln Sie das Datum mit der LocalDateTime-Klasse
Generieren Sie den Quellcode aus der JAR-Datei mit der JD-GUI des Java Decompiler-Projekts
[Java] Analysieren Sie Excel-Dateien (nicht auf verschiedene Dateien beschränkt) mit Apathce Tika [Kotlin]
Überprüfen Sie den Inhalt des Argumentobjekts mit Mockito
[Java] Stellen Sie die Zeit im Browser mit jsoup ein
[Java] Ermittelt die Länge der Ersatzpaarzeichenfolge
[JAVA] Nur den Dateinamen abrufen, ausgenommen die Erweiterung
Überschreiben Sie den Inhalt der Konfiguration mit Spring-boot + JUnit5
Berechnen Sie die Ähnlichkeitsbewertung von Zeichenketten mit JAVA
Inkrementiert durch das dritte Argument der iterierten Methode der aus Java9 hinzugefügten Stream-Klasse
[Java / Kotlin] Ändern Sie die Größe unter Berücksichtigung der Ausrichtung des Bildes
Holen Sie sich Enum, indem Sie sich vom Inhalt zurückziehen
[Java] KFunction von Method / Constructor in Java abrufen [Kotlin]
[Java] So erhalten Sie die URL der Übergangsquelle
Rufen Sie die URL des HTTP-Umleitungsziels in Java ab
Listen Sie den Inhalt von Kategorien auf, die mit Active Hash erstellt wurden
[Kotlin] Ermittelt den Argumentnamen des Konstruktors durch Reflektion
Wie schreibe ich Scala aus der Perspektive von Java
[Java] Überprüfen Sie die JDK-Version der erstellten Kriegsdatei
Rufen Sie eine Methode mit Kotlins Rückrufblock von Java aus auf
[Java] So erhalten Sie den Maximalwert von HashMap
Überwachen Sie den internen Status von Java-Programmen mit Kubernetes
Überprüfen Sie das Verhalten von Java Intrinsic Locks mit bpftrace
[Java] Holen Sie sich das Datum 10 Tage später mit der Calendar-Klasse
[Rails] So erhalten Sie den Inhalt starker Parameter
Java: Verwenden Sie Stream, um den Inhalt einer Sammlung zu sortieren
Die Geschichte von dto, dao-like mit Java, SQLite
Ersetzen Sie nur einen Teil des URL-Hosts durch Java
Beginnen Sie mit serverlosem Java mit dem leichtgewichtigen Framework Micronaut!
Ich möchte eine Liste des Inhalts einer Zip-Datei und ihrer unkomprimierten Größe erhalten
Ich möchte den Inhalt von Assets in der mit capistrano erstellten Umgebung von Grund auf neu erstellen
Gibt an, ob die Serverseite zum Zeitpunkt der Systemwiederherstellung mit Kotlin oder Java erstellt werden soll
Suchen Sie die Adressklasse und den Adresstyp aus der IP-Adresse mit Java
Verwendung des mit Tensorflow 2.0 trainierten Modells mit Kotlin / Java
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
So erhalten Sie die längsten Informationen von Twitter ab dem 12.12.2016
[Java] Vereinfachen Sie die Implementierung der Datenverlaufsverwaltung mit Reladomo