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.
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
Here are 2 ways(both are OS independent.)
Using
Paths
: Since 1.7Using
FilenameUtils
in Apache Commons IO :or
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.