2009-12-21 5 views
0

J'ai le code pour obtenir le type mime. Cela semble fonctionner. Quand je mime mimeType dans une instruction if, je n'obtiens pas l'effet désiré. Voici les extraits.J'ai besoin d'ouvrir un fichier basé sur son type mime

GET mime bien--

MimetypesFileTypeMap mimeTypesMap = new MimetypesFileTypeMap(); 
String mimeType = mimeTypesMap.getContentType(file); 

Maintenant, je veux seulement ouvrir un fichier si le type MIME est text--

if (file.isFile()) { 
try { 
    if (mimeType == "text/plain") openFile(file); 
} catch (IOException e) { 
    e.printStackTrace(); 
     System.err.print(" Cannot process file....\n"); 
} 
} 

Ce ne sera pas ouvrir un fichier texte. Des idées sur pourquoi ça ne marchera pas? openFile (fichier) fonctionne et n'est pas le problème. le fichier est un objet fichier. Merci.

+2

Bienvenue chez SO. Vous voudrez peut-être ajouter des balises indiquant la langue/technologie dont vous parlez. –

+0

Il utilise Java. – SLaks

+0

Oui, c'est Java. C'est pourquoi j'ai ajouté l'étiquette relative. – kiamlaluno

Répondre

0

Peut-être que le type mime est juste text?

recherche de fichiers types MIME pour:

Le MimetypesFileTypeMap regarde dans divers endroits dans le système de l'utilisateur pour les types MIME entrées du fichier. Lorsque demandes sont faites pour rechercher MIME types dans le MimetypesFileTypeMap, il recherches MIME fichiers types dans l'ordre suivant:

  1. entrées Programmatically ajoutées à l'instance MimetypesFileTypeMap.
  2. Le fichier .mime.types dans le répertoire personnel de l'utilisateur.
  3. Le fichier /lib/mime.types.
  4. Le fichier ou la ressource nommée META-INF/mime.types.
  5. Le fichier ou la ressource nommée META-INF/mimetypes.default (généralement uniquement dans le fichier activation.jar ).

Trouver ce fichier et savoir quel type mime a été spécifié pour les fichiers txt. Source: link

+0

Peu probable. Pour un, 'text' n'est pas un type MIME. D'autre part, le cas de la plupart des utilisateurs est que le cinquième élément de cette liste est celui qui va gagner - c'est le fichier qui fait partie de la distribution J2EE, et comme toutes les cartes de type MIME, 'text/plain' est le type associés à des suffixes de fichiers texte couramment utilisés. – delfuego

+0

La réponse que vous donnez ne m'aide pas du tout. J'ai imprimé la variable mimeType et j'ai obtenu un type mime pour tout ce que j'ai cliqué. (J'ai créé un arbre en utilisant un objet DefaultMutableTreeNode et un écouteur de la souris Le code JTree fonctionne.La chaîne imprimée est texte/clair. Je peux vous donner le code complet, mais il est assez grand et mon problème est seulement dans cette méthode - public void valueChanged (événement TreeSelectionEvent) –

+0

que je remplace et est l'écouteur de souris pour le JTree. Je crée un JTree, le peupler avec DefaultMutableTreeNode, et quand je clique sur un fichier texte, je veux l'ouvrir dans un TextArea. Je veux seulement ouvrir des fichiers texte, d'où la vérification du type mime. Le type mime est retourné correctement, je ne peux juste pas faire le fichier sur lequel je clique seulement ouvert si le type mime est le type text/plain. Oui je vérifie s'il s'agit d'un fichier et non d'un répertoire. Ai-je expliqué mon dilemme plus clairement maintenant? Merci de votre aide. –

1

Vous comparez le type MIME en utilisant ==, pas String#equals() - c'est une chaîne, oui? Vous avez sans doute de le faire:

if (mimeType.equals("text/plain")) openFile(file); 

Ou mieux encore:

if ("text/plain".equals(mimeType)) openFile(file); 

depuis qui empêche un NPE d'obtenir de votre manière.

+0

Wow. Comme je suis bête. Je le savais. J'ai fait du codage dans Perl et JS et je n'ai pas réinitialisé ma façon de penser. Merci d'avoir éclairci ça avec moi. –

Questions connexes