web-dev-qa-db-ja.com

フルパスから拡張子なしのファイル名を取得

Excelファイルのデータをデータベースに保存するプログラムを作成しています。ユーザーがコンソールでファイルのフルパスを指定し、プログラムの後にファイル名のみを取得して続行することを希望します。

フルパスをロードするためのコードは次のとおりです。

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('.')));

その後、私はしたい:String filename = .......

ユーザーが入力するフルパスは次のようになります:C:\\Users\\myfiles\\Documents\\test9.xls

私が作成するファイル名は、.xlsなしの名前のみを取ります。誰も私がこれを行う方法を手伝ってくれますか?

ファイル名「test9.xls」として使用する場合はどうすればよいですか? –

22
dedmar

私は通常、他の投稿で説明されているこのソリューションを使用します:

import org.Apache.commons.io.FilenameUtils;

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

次のようにできます:

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

または Apache.commons.io.FilenameUtils を使用できます。

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

File クラスを使用してファイル名を取得できます。

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

Fileオブジェクトを使用すると、ファイルが存在することをテストする機能など、多くの利点があります。

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

また、削除する前に、ファイルに拡張子があることを確認する必要があります。

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

ファイルの名前をStringとして返すfile.getName()メソッドを呼び出すことができます。次に、拡張機能をカットします。

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