新聞中心
在寫網(wǎng)絡(luò)爬蟲的時(shí)候,需要根據(jù)鏈接來(lái)獲取文件類型,將內(nèi)容正確存儲(chǔ)。之前我都是根據(jù)鏈接的后綴來(lái)判斷的,比如:

欽北網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站自2013年起到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
http://img12.360buyimg.com/da/20120330/88_31_ZySDre.jpg
這個(gè)鏈接指向的文件就是個(gè)jpg文件。但是后來(lái)發(fā)現(xiàn)有諸如
http://jprice.360buyimg.com/getSkuPriceImgService.action?skuId=1850001109&origin=1&webSite=1&type=1的鏈接,這招就不靈了。后來(lái)谷歌百度了一下也沒發(fā)現(xiàn)解決辦法。后來(lái)機(jī)緣巧合在Java Network Programming上找到了一個(gè)辦法:
URLConnection class provides two static methods to help programs figure out the MIME type of some data; you can use these if the content type just isn't available or if you have reason to believe that the content type you're given isn't correct。
就是說URLConnection提供了兩種方法可以猜測(cè)(根據(jù)實(shí)測(cè)結(jié)果,這個(gè)猜測(cè)是相當(dāng)?shù)臏?zhǔn))數(shù)據(jù)的MIME類型。
第一個(gè)是:
- public static String guessContentTypeFromName(String name)
這個(gè)方法根據(jù)URL文件部分的后綴名來(lái)判斷類型,跟之前我的方法一樣。這個(gè)不能解決上面那個(gè)問題。
第二個(gè)是:
- public static String guessContentTypeFromStream(InputStream in)
這個(gè)方法是根據(jù)流的前面幾個(gè)字節(jié)來(lái)判斷類型,這個(gè)就不需要文件后綴名了,完全可以解決上面那個(gè)問題。
測(cè)試代碼如下:
- BufferedInputStream bis = null;
- HttpURLConnection urlconnection = null;
- URL url = null;
- url = new URL(strUrl);
- urlconnection = (HttpURLConnection) url.openConnection();
- urlconnection.connect();
- bis = new BufferedInputStream(urlconnection.getInputStream());
- System.out.println("file type:"+HttpURLConnection.guessContentTypeFromStream(bis));
原文鏈接:http://www.cnblogs.com/lisperl/archive/2012/05/21/2511224.html
新聞標(biāo)題:Java獲取URL鏈接的文件類型
文章URL:http://m.fisionsoft.com.cn/article/cohdcis.html


咨詢
建站咨詢
