Get file name from a file location in Java

后端 未结 5 1329
野性不改
野性不改 2020-12-15 15:51

I have a String that provides an absolute path to a file (including the file name). I want to get just the file\'s name. What is the easiest way to do this?

相关标签:
5条回答
  • 2020-12-15 16:11

    From Apache Commons IO FileNameUtils

    String fileName = FilenameUtils.getName(stringNameWithPath);
    
    0 讨论(0)
  • 2020-12-15 16:14

    Here are 2 ways(both are OS independent.)

    Using Paths : Since 1.7

    Path p = Paths.get(<Absolute Path of Linux/Windows system>);
    String fileName = p.getFileName().toString();
    String directory = p.getParent().toString();
    

    Using FilenameUtils in Apache Commons IO :

    String name1 = FilenameUtils.getName("/ab/cd/xyz.txt");
    String name2 = FilenameUtils.getName("c:\\ab\\cd\\xyz.txt");
    
    0 讨论(0)
  • 2020-12-15 16:25

    Apache Commons IO provides the FilenameUtils class which gives you a pretty rich set of utility functions for easily obtaining the various components of filenames, although The java.io.File class provides the basics.

    0 讨论(0)
  • 2020-12-15 16:27
    new File(absolutePath).getName();
    
    0 讨论(0)
  • 2020-12-15 16:32
    new File(fileName).getName();
    

    or

    int idx = fileName.replaceAll("\\\\", "/").lastIndexOf("/");
    return idx >= 0 ? fileName.substring(idx + 1) : fileName;
    

    Notice that the first solution is system dependent. It only takes the system's path separator character into account. So if your code runs on a Unix system and receives a Windows path, it won't work. This is the case when processing file uploads being sent by Internet Explorer.

    0 讨论(0)
提交回复
热议问题