需要从URL中提取文件名

时间:2014-10-22 13:20:28

标签: java regex

我正在尝试从URL中提取具有某些特定扩展名的文件名。例如,我有一个类似" https://abc.xyz.com/path/somefilename.xy"的网址。我需要提取" somefilename.xy"来自上面的网址,没有别的。

基本上我需要在我的java程序中编写该代码

我在正则表达式中表现不佳,所以有人可以帮助我。

2 个答案:

答案 0 :(得分:6)

您也可以在没有正则表达式的情况下执行此操作:

String url = "https://abc.xyz.com/path/somefilename.xy";
String fileName = url.substring(url.lastIndexOf('/') + 1);
// fileName is now "somefilename.xy"

编辑(归功于 @SomethingSomething ):如果您还应支持包含参数的网址,例如https://abc.xyz.com/path/somefilename.xy?param1=blie&param2=bla,则可以使用此代码:

String url = "https://abc.xyz.com/path/somefilename.xy?param1=blie&param2=bla";
java.net.Url urlObj = new java.net.Url(url);
String urlPath = urlObj.getPath();
String fileName = urlPath.substring(urlPath.lastIndexOf('/') + 1);
// fileName is now "somefilename.xy"

答案 1 :(得分:1)

这已经完成了一百次,取自this answer

import org.apache.commons.io.FilenameUtils;

public class FilenameUtilTest {

    public static void main(String[] args) {
        String url = "http://www.example.com/some/path/to/a/file.xml";

        String baseName = FilenameUtils.getBaseName(url);
        String extension = FilenameUtils.getExtension(url);

        System.out.println("Basename : " + baseName);
        System.out.println("extension : " + extension);
    }

}