java获取url后缀,以及判断是否带参数(?params=xxx)

本文介绍了一种在Java中从URL中获取文件后缀名并判断及去除URL参数的方法。通过使用String对象的方法,如lastIndexOf和substring,结合FilenameUtils.getExtension方法实现了这一功能。

java获取url后缀,以及判断是否带参数(?params=xxx)

	// 使用了String对象的方法截取字符串
	String fileUrl = "http://www.baidu.com?a=1234";
	int index = fileUrl.lastIndexOf("?");
	if (index != -1) {
	    fileUrl = fileUrl.substring(0, index);
	}
	String extension = FilenameUtils.getExtension(fileUrl);
	System.out.println(extension);
	# getExtension 方法
	public static String getExtension(String filename) {
        if (filename == null) {
            return null;
        } else {
            int index = indexOfExtension(filename);
            return index == -1 ? "" : filename.substring(index + 1);
        }
    }
Java 中从 URL 获取文件后缀名,可以通过对 URL 字符串进行处理,提取出文件名称部分,然后从中获取后缀名。如果 URL 包含查询数(如 `?param=value`),需要先去除这些数,再进行后缀提取。 以下是一个实现思路和示例代码: 1. 首先检查 URL是否包含查询数(`?`),如果存在,则截取掉数部分。 2. 然后从 URL 中提取文件名(即最后一个 `/` 后的内容)。 3. 最后从文件名中提取后缀名(即最后一个 `.` 后的内容)。 ```java public class FileExtensionExtractor { public static String getExtension(String url) { if (url == null) { return null; } // 去除查询数部分 int queryIndex = url.indexOf("?"); String filename = (queryIndex != -1) ? url.substring(0, queryIndex) : url; // 提取文件名 int lastSlashIndex = filename.lastIndexOf("/"); filename = (lastSlashIndex != -1) ? filename.substring(lastSlashIndex + 1) : filename; // 提取后缀名 int dotIndex = filename.lastIndexOf("."); return (dotIndex != -1) ? filename.substring(dotIndex + 1) : ""; } public static void main(String[] args) { String fileUrl = "http://www.baidu.com?a=1234"; System.out.println(getExtension(fileUrl)); // 输出: com fileUrl = "http://example.com/path/to/file.txt?param=value"; System.out.println(getExtension(fileUrl)); // 输出: txt } } ``` 此方法适用于大多数标准 URL 格式,并且能够处理带有查询数的链接[^1]。 ### 通过库函数获取后缀 如果希望更智能地识别文件类型,而不是单纯依赖后缀名,可以使用 `URLConnection.guessContentTypeFromStream` 方法,它通过读取输入流的字节来判断文件类型,而不依赖文件名或 URL 后缀[^2]。 ```java import java.io.BufferedInputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class FileTypeGuesser { public static void main(String[] args) throws Exception { String strUrl = "http://example.com/path/to/file.pdf"; URL url = new URL(strUrl); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); try (InputStream inputStream = urlConnection.getInputStream(); BufferedInputStream bis = new BufferedInputStream(inputStream)) { String fileType = HttpURLConnection.guessContentTypeFromStream(bis); System.out.println("File type: " + fileType); } } } ``` 此方法适用于无法通过 URL 后缀判断文件类型的情况,例如 URL 中没有明显的文件扩展名[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值