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」として使用する場合はどうすればよいですか? –
私は通常、他の投稿で説明されているこのソリューションを使用します:
import org.Apache.commons.io.FilenameUtils;
String basename = FilenameUtils.getBaseName(fileName);
次のようにできます:
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);
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("."));
}
ファイルの名前をStringとして返すfile.getName()
メソッドを呼び出すことができます。次に、拡張機能をカットします。
String fileName = file.getName();
fileName = fileName.substring(0, fileName.lastIndexOf(".")+1);
if (!filename.equals(""))
{
String [] fileparts = filename.split("\\.");
String filename = fileparts[0]; //Get first part
}