24

我正在制作一个程序来将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”,我会怎么做?——</p>

4

5 回答 5

40

我通常使用其他帖子中描述的这个解决方案:

import org.apache.commons.io.FilenameUtils;

String basename = FilenameUtils.getBaseName(fileName);
于 2013-07-23T08:42:37.667 回答
39

你可以这样做:

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);
于 2013-04-29T08:02:48.560 回答
20

您可以使用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("."));
}
于 2013-04-29T08:05:31.760 回答
1
if (!filename.equals(""))    
{
        String [] fileparts = filename.split("\\.");
        String filename = fileparts[0]; //Get first part
}
于 2014-01-18T09:47:05.070 回答
1

您可以调用将file.getName()文件名作为字符串返回的方法。然后你切断扩展。

String fileName = file.getName();
fileName = fileName.substring(0, fileName.lastIndexOf(".")+1);
于 2013-04-29T08:01:23.003 回答