Java: splitting the filename into a base and extension

后端 未结 8 1932
我寻月下人不归
我寻月下人不归 2020-11-27 12:25

Is there a better way to get file basename and extension than something like

File f = ...
String name = f.getName();
int dot = name.lastIndexOf(\'.\');
Strin         


        
8条回答
  •  清酒与你
    2020-11-27 12:50

    Source: http://www.java2s.com/Code/Java/File-Input-Output/Getextensionpathandfilename.htm

    such an utility class :

    class Filename {
      private String fullPath;
      private char pathSeparator, extensionSeparator;
    
      public Filename(String str, char sep, char ext) {
        fullPath = str;
        pathSeparator = sep;
        extensionSeparator = ext;
      }
    
      public String extension() {
        int dot = fullPath.lastIndexOf(extensionSeparator);
        return fullPath.substring(dot + 1);
      }
    
      public String filename() { // gets filename without extension
        int dot = fullPath.lastIndexOf(extensionSeparator);
        int sep = fullPath.lastIndexOf(pathSeparator);
        return fullPath.substring(sep + 1, dot);
      }
    
      public String path() {
        int sep = fullPath.lastIndexOf(pathSeparator);
        return fullPath.substring(0, sep);
      }
    }
    

    usage:

    public class FilenameDemo {
      public static void main(String[] args) {
        final String FPATH = "/home/mem/index.html";
        Filename myHomePage = new Filename(FPATH, '/', '.');
        System.out.println("Extension = " + myHomePage.extension());
        System.out.println("Filename = " + myHomePage.filename());
        System.out.println("Path = " + myHomePage.path());
      }
    }
    

提交回复
热议问题