简体   繁体   中英

Java - How to get the name of a file from the absolute path and remove its file extension?

I have a problem here, I have a String that contains a value of C:\\Users\\Ewen\\AppData\\Roaming\\MyProgram\\Test.txt, and I want to remove the C:\\Users\\Ewen\\AppData\\Roaming\\MyProgram\\ so that only Test is left. So the question is, how can i remove any part of the string.

Thanks for your time! :)

If you're working strictly with file paths, try this

String path = "C:\\Users\\Ewen\\AppData\\Roaming\\MyProgram\\Test.txt";
File f = new File(path);
System.out.println(f.getName()); // Prints "Test.txt"

Thanks but I also want to remove the .txt

OK then, try this

String fName = f.getName();
System.out.println(fName.substring(0, fName.lastIndexOf('.')));

Please see this for more information.

The String class has all the necessary power to deal with this. Methods you may be interested in:

String.split() , String.substring() , String.lastIndexOf()

Those 3, and more, are described here: http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html

Give it some thought, and you'll have it working in no time :).

I recommend using FilenameUtils.getBaseName(String filename) . The FilenameUtils class is a part of Apache Commons IO .

According to the documentation, the method "will handle a file in either Unix or Windows format". "The text after the last forward or backslash and before the last dot is returned" as a String object.

String filename = "C:\\Users\\Ewen\\AppData\\Roaming\\MyProgram\\Test.txt";
String baseName = FilenameUtils.getBaseName(filename);
System.out.println(baseName);

The above code prints Test .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM