【问题标题】:Get filename without extension from full path [duplicate]从完整路径获取不带扩展名的文件名[重复]
【发布时间】:2013-04-29 07:59:35
【问题描述】:

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

【问题讨论】:

  • 把 '/' 改成 '\\' String file = strfullPath.substring(strfullPath.lastIndexOf('\\') + 1);
  • 如果我想取为文件名“test9.xls”我会怎么做?

标签: java filenames


【解决方案1】:

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

import org.apache.commons.io.FilenameUtils;

String basename = FilenameUtils.getBaseName(fileName);

【讨论】:

    【解决方案2】:

    你可以这样做:

    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);
    

    【讨论】:

    • +1 因为不重新发明轮子。
    • 感谢 FilenameUtils!
    • 加上一个使用纯java代码而不是第三方库的小型sn-p。
    【解决方案3】:

    您可以使用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("."));
    }
    

    【讨论】:

      【解决方案4】:

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

      String fileName = file.getName();
      fileName = fileName.substring(0, fileName.lastIndexOf(".")+1);
      

      【讨论】:

      • 如果文件没有扩展名,fileName会变成""。
      • @AndrewThompson 考虑到这一点,如果文件名有“。”,这是唯一不会失败的方法。除了扩展名。
      • 应该是 fileName.lastIndexOf(".") - 1 而不是 fileName.lastIndexOf(".")+1
      【解决方案5】:
      if (!filename.equals(""))    
      {
              String [] fileparts = filename.split("\\.");
              String filename = fileparts[0]; //Get first part
      }
      

      【讨论】:

      • 以后在回答问题时,请提供任何代码示例,解释为什么会这样。
      • 这没有考虑到文件名可能有很多点。例如 vendor.prod.min.js 或类似的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 2010-10-15
      • 2010-09-27
      • 2020-03-11
      相关资源
      最近更新 更多