Get file name from a file location in Java

Ankur picture Ankur · Jun 18, 2009 · Viewed 109.7k times · Source

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.

Answer

akarnokd picture akarnokd · Jun 18, 2009
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.