[Java] Récupère MimeType à partir du contenu du fichier avec Apathce Tika [Kotlin]

Chose que tu veux faire

Obtenez le MimeType à partir du contenu du fichier. MimeType peut être déduit de l'extension du fichier, mais comme il est utilisé à des fins où il est difficile de le réécrire, il est obtenu à partir du contenu du fichier.

veux dire

Utilisez Apache Tika. Cependant, le résultat dépend du nom du fichier à moins qu'il n'implique TikaInputStream.

Méthode d'introduction

Installez et utilisez Apache Tika Core de Maven. J'ai utilisé «1.21» pour la vérification.

Code de vérification

C'est un exemple approximatif, mais c'est un exemple pour obtenir MimeType pour tous les fichiers sous src / main / resources. En remarque, le type «org.apache.tika.metadata.Metadata» est nommé parce qu'il est nommé type «Metadata» de Kotlin.

Lire le fichier dans les ressources et générer MimeType


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)
        //L'extension est unifiée à lowerCase pour le tri
        it.name.split(".").last().toLowerCase() + " -> " + tika.detect(tikaStream, metaData)
    }.sorted().forEach {
        //Sortie après tri
        println(it)
    }
}

Résultat d'exécution

C'est le résultat de jeter les fichiers et des échantillons qui se trouvaient dans cette zone et de les retourner. Cela peut être pris de manière presque unique. J'ai également réécrit l'extension et l'ai essayé, et cela a plutôt bien fonctionné.

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

Autres moyens

J'ai utilisé Tika cette fois, mais la méthode utilisant ʻURL Connection et mime-util` est majeure dans le sens où elle sort dans la recherche. Cependant, ceux-ci avaient des difficultés dans la précision de détection et la poursuite de la maintenance, donc cette fois j'ai utilisé Tika comme essai.

Le site que j'ai utilisé pour écrire l'article

Recommended Posts

[Java] Récupère MimeType à partir du contenu du fichier avec Apathce Tika [Kotlin]
[Java] Obtenir le jeu de caractères avec Apathce Tika / Initialiser la chaîne à partir du jeu de caractères [Kotlin]
[Java] Obtenez des métadonnées à partir de fichiers avec Apathce Tika, et obtenez la largeur et la hauteur des images / vidéos à partir des métadonnées [Kotlin]
[Java] Générer un URI de données à partir d'une chaîne d'octets du contenu du fichier [Kotlin]
CI l'architecture des applications Java / Kotlin avec ArchUnit
Langage Java du point de vue de Kotlin et C #
[Java] Récupère le fichier dans le fichier jar quel que soit l'environnement
Accédez à l'abréviation à partir de 5 exemples de listes Java en italique
Remplacez le contenu du fichier Jar
[Java1.8 +] Obtenez la date du jour × suivant avec LocalDate
Obtenez l'URL publique du fichier privé de Flickr en Java
Écraser le téléchargement du fichier avec le même nom avec BOX SDK (java)
Comment obtenir la longueur d'un fichier audio avec Java
Obtenez le résultat de POST en Java
Vérifiez le contenu du magasin de certificats Java
Vérifiez le contenu des paramètres avec le levier
[Java] Obtenez le jour d'un jour spécifique
Mémo: [Java] Vérifiez le contenu du répertoire
[Kotlin] Supprimer les fichiers en double [Java]
Mettre en forme le contenu de LocalDate avec DateTimeFormatter
[Java8] Recherchez le répertoire et récupérez le fichier
[Java] Obtenez la date avec la classe LocalDateTime
Générer le code source à partir du fichier JAR avec JD-GUI du projet Java Decompiler
[Java] Analyser les fichiers Excel (non limités à divers) avec Apathce Tika [Kotlin]
Vérifiez le contenu de l'objet argument avec Mockito
[Java] Réglez l'heure depuis le navigateur avec jsoup
[Java] Obtenir la longueur de la chaîne de paire de substitution
[JAVA] Récupère uniquement le nom du fichier, à l'exclusion de l'extension
Écraser le contenu de la configuration avec Spring-boot + JUnit5
Calculer le score de similarité des chaînes de caractères avec JAVA
Incrémenté du troisième argument de la méthode iterate de la classe Stream ajoutée depuis Java9
[Java / Kotlin] Redimensionner en tenant compte de l'orientation de l'image
Obtenez Enum en retirant du contenu
[Java] Obtenir KFunction à partir de la méthode / du constructeur en Java [Kotlin]
[Java] Comment obtenir l'URL de la source de transition
Obtenez l'URL de la destination de la redirection HTTP en Java
Lister le contenu des catégories créées avec Active Hash
[Kotlin] Récupère le nom de l'argument du constructeur par réflexion
Comment écrire Scala du point de vue de Java
[Java] Vérifiez la version JDK du fichier war construit
Appeler une méthode avec le bloc de rappel de Kotlin depuis Java
[Java] Comment obtenir la valeur maximale de HashMap
Surveillez l'état interne des programmes Java avec Kubernetes
Vérifiez le comportement de Java Intrinsic Locks avec bpftrace
[Java] Obtenez la date 10 jours plus tard avec la classe Calendar
[Rails] Comment obtenir le contenu des paramètres forts
Java: utilisez Stream pour trier le contenu d'une collection
L'histoire de la création de DTO, semblable à Dao avec Java, SQLite
Remplacez seulement une partie de l'hôte URL par java
Commencez avec Java sans serveur avec le framework léger Micronaut!
Je veux obtenir une liste du contenu d'un fichier zip et sa taille non compressée
Je veux recréer le contenu des actifs à partir de zéro dans l'environnement construit avec capistrano
Que ce soit pour faire du côté serveur au moment de la reconstruction du système avec Kotlin ou Java
Trouvez la classe d'adresse et le type d'adresse à partir de l'adresse IP avec Java
Comment utiliser le modèle entraîné Tensorflow 2.0 avec Kotlin / Java
J'ai essayé de résumer les bases de kotlin et java
Comment obtenir les informations les plus longues de Twitter à partir du 12/12/2016
[Java] Simplifiez la mise en œuvre de la gestion de l'historique des données avec Reladomo