Tutorial :Get file name from a file location in Java


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?

It needs to be as general as possible as I cannot know in advance what the URL will be. I can't simply create a URL object and use getFile() - all though that would have been ideal if it was possible - as it's not necessarily an http:// prefix it could be c:/ or something similar.


new File(fileName).getName();  


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.


new File(absolutePath).getName();  


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.


From Apache Commons IO FileNameUtils

String fileName = FilenameUtils.getName(stringNameWithPath);  


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

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Next Post »