Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get name of File object without its extension in Java? [duplicate]

Tags:

I am trying to get name of a File object without its extension, e.g. getting "vegetation" when the filename is "vegetation.txt." I have tried implementing this code:

openFile = fileChooser.getSelectedFile(); String[] tokens = openFile.getName().split("."); String name = tokens[0]; 

Unfortunately, it returns a null object. There is a problem just in the defining the String object, I guess, because the method getName() works correctly; it gives me the name of the file with its extension.

Do you have any idea?

like image 640
MichalB Avatar asked Dec 06 '11 00:12

MichalB


People also ask

How can I find the file name without extension?

GetFileNameWithoutExtension(ReadOnlySpan<Char>) Returns the file name without the extension of a file path that is represented by a read-only character span.

How do I get the file extension of a file in Java?

If you are using the Gauva Library, you can directly use the getFileExtension() method to get the file extension. For example, String fileName = "Test. java"; String extension = Files.


1 Answers

If you want to implement this yourself, try this:

String name = file.getName(); int pos = name.lastIndexOf("."); if (pos > 0) {     name = name.substring(0, pos); } 

(This variation doesn't leave you with an empty string for an input filename like ".txt". If you want the string to be empty in that case, change > 0 to >= 0.)


You could replace the if statement with an assignment using a conditional expression, if you thought it made your code more readable; see @Steven's answer for example. (I don't think it does ... but it is a matter of opinion.)


It is arguably a better idea to use an implementation that someone else has written and tested. Apache FilenameUtils is a good choice; see @slachnick's Answer, and also the linked Q&A.

like image 164
Stephen C Avatar answered Oct 24 '22 22:10

Stephen C