web-dev-qa-db-fra.com

Obtenir un nom de fichier sans extension à partir du chemin complet

Je crée un programme pour stocker des données à partir de fichiers Excel dans une base de données. Je voudrais que l'utilisateur donne à la console le chemin complet du fichier et ensuite que le programme ne prenne que le nom du fichier pour continuer.

Le code pour charger le chemin complet est: 

String strfullPath = "";
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter the fullpath of the file");
strfullPath = scanner.nextLine();
String file = strfullPath.substring(strfullPath.lastIndexOf('/') + 1);
System.out.println(file.substring(0, file.indexOf('.')));

Après cela, j'aimerais avoir: String filename = .......

Le chemin complet que l'utilisateur taperait serait comme ceci: C:\\Users\\myfiles\\Documents\\test9.xls

Le nom de fichier que je créerais ne prendrait que le nom sans le .xls! Quelqu'un pourrait-il m'aider à faire cela?

Comment je le ferais si je voulais prendre comme nom de fichier "test9.xls"? -

20
dedmar

J'utilise habituellement cette solution décrite dans un autre post:

import org.Apache.commons.io.FilenameUtils;

String basename = FilenameUtils.getBaseName(fileName);
35
Oibaf it

Vous pouvez le faire comme ça:

String fname = file.getName();
int pos = fname.lastIndexOf(".");
if (pos > 0) {
    fname = fname.substring(0, pos);
}

ou vous pouvez utiliser Apache.commons.io.FilenameUtils :

String fileNameWithOutExt = FilenameUtils.removeExtension(fileNameWithExt);
33
CloudyMarble

Vous pouvez utiliser la classe File pour obtenir le nom du fichier:

File userFile = new File(strfullPath);
String filename = userFile.getName();

L'utilisation d'un objet File présente de nombreux avantages, notamment la possibilité de tester le fichier:

if (userFile.isFile()) {
  // Yay, it's a valid file (not a directory and not an invalid path)
}

Vous devez également vérifier que le fichier a une extension avant d'essayer de le supprimer:

if (filename.indexOf(".") > 0) {
    filename = filename.substring(0, filename.lastIndexOf("."));
}
19
Duncan Jones

Vous pouvez appeler la méthode file.getName() qui renvoie le nom du fichier sous forme de chaîne. Ensuite, vous coupez l'extension. 

String fileName = file.getName();
fileName = fileName.substring(0, fileName.lastIndexOf(".")+1);
1
Lukas Eichler
if (!filename.equals(""))    
{
        String [] fileparts = filename.split("\\.");
        String filename = fileparts[0]; //Get first part
}
0
Maheshbabu Jammula