2013-05-08 1 views
0

J'essaie de détecter si le fichier que j'ouvre est un fichier HTML.Détecter une extension de fichier en Java

Je l'ai déjà essayé:

try { 
    String file = fileName.getCanonicalPath(); 

    if (file.endsWith(".htm") | file.endsWith(".html")) { 

    } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

Mais le file.endsWith(); ne semble pas être détecter quoi que ce soit. Le fileName est le fichier que j'ouvre. Faites-moi savoir si je dois poster le code que j'utilise pour ouvrir le fichier.

Merci d'avance.

+0

Avez-vous vraiment besoin du chemin canonique? http://stackoverflow.com/questions/1099300/whats-the-difference-between-getpath-getabsolutepath-and-getcanonicalpath – dnault

Répondre

4

Cette ligne semble suspect:

if (file.endsWith(".htm") | file.endsWith(".html")) { 

L'opérateur | est logique binaire opérateur OR. Vous avez besoin de l'opérateur logique-OU, ||.

EDIT

Ajouter ce @MadProgrammer suggessted dans un commentaire:

Appel toLowerCase() sur le nom du fichier pour tenir compte de la possibilité que le fichier se termine par .HTM ou .HTML.

+1

Je voudrais aussi ajouter 'file.toLowerCase(). endsWith' pour vous assurer que vous ne courez pas dans les problèmes de comparaison de cas +1 rien de moins – MadProgrammer

+0

@MadProgrammer - Bon point, il pourrait être ".HTM" pour tout ce que nous savons. – rgettman

+2

-1, le bitwise '|' fonctionne correctement, il n'a tout simplement pas la fonction de court-circuit. – jlordo

2

Vous pourriez également avoir un problème avec ce cas. Comme @rgettman souligne que vous avez probablement besoin d'un logique ou là aussi

if (file.toLowerCase().endsWith(".htm") || file.toLowerCase().endsWith(".html")) { 
Questions connexes