黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

URL與URI

系統(tǒng) 2140 0

* URL(Uniform Resource Locator ),通用資源定位符。 http://www.mybole.com.cn/index.asp 就是一個URL。


* URI(Uniform Resource Identifier),通用資源標識符。


* URI純粹是個符號結(jié)構(gòu),用于指定構(gòu)成Web資源的字符串的各個不同部分。URL是一種特殊類型的URI,它包含了用于查找某個資源的足夠信息。其它的URI,例如: mailto:myoble@mybole.com.cn 則不屬于定位符,因為它里面不存在根據(jù)該標識符來查找的任何數(shù)據(jù)。這種URI稱為URN(通用資源名)。


* 在Java庫中,URI類不包含用于訪問通用資源標識符設定的任何方法,它的唯一作用是進行分析。相反,URL類則可以打開到達資源的一個字符串。

實驗:通過URL 來下載服務器上的一個資源文件,需要Tomcat服務器支持

?

代碼:

?

?

    package cn.com.xinli.test.socket;

import java.awt.event.*;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

import javax.swing.*;

public class HttpDownLoad
{
	public static void main(String[] args)
	  {
	    JFrame jf=new JFrame("下載程序");
	    jf.setSize(600,400);
	    jf.setLocation(100,100);
	    JPanel p=new JPanel();
	    JLabel l=new JLabel("Please input URL:");
	    final JTextField tf=new JTextField(30);
	    p.add(l);
	    p.add(tf);
	    jf.getContentPane().add(p,"North");
	    final JTextArea ta=new JTextArea();
	    jf.getContentPane().add(ta,"Center");
	    JButton btn=new JButton("Download");
	    jf.getContentPane().add(btn,"South");
	    btn.addActionListener(new ActionListener() {
	          public void actionPerformed(ActionEvent e) {
	            String str=tf.getText();
	            System.out.println("輸入URI的內(nèi)容:"+str);
	            String fileName=str.substring(str.lastIndexOf("/")+1);
	            /*下載文件的名字*/
	            System.out.println("fileName:"+fileName);
	            
	            try {
	              URL url=new URL(str);
	              URLConnection urlConn=url.openConnection();
	              /**
	               * 由于windos 系統(tǒng)的換行符是\r\n,linux 系統(tǒng)的換行符是\n,
	               * 為了通用我們可以使用系統(tǒng)屬性的方式得到換行符
	               * 
	               */
	              String line=System.getProperty("line.separator");
	              ta.append("Host: "+url.getHost());
	              ta.append(line);
	              ta.append("Port: "+url.getDefaultPort());
	              ta.append(line);
	              ta.append("ContentType: "+urlConn.getContentType());
	              ta.append(line);
	              ta.append("ContentLength: "+urlConn.getContentLength());
	              InputStream is=urlConn.getInputStream();
	              
	              /**
	               * 以下注釋的部分為按行讀取 關鍵代碼:strLine=br.readLine())!=null
	               * 為注釋的部分為按字節(jié)讀取,每次讀一個字節(jié) 關鍵代碼:(data=is.read())!=-1
	               * 
	               * 文本和html等格式文件可以按行讀取
	               * 圖像聲音文件必須按字節(jié)讀取,因為這個時候已經(jīng)沒有 行 的概念
	               * 其實所有的文件都可以按字節(jié)讀取,建議使用按字節(jié)讀取 
	               */
	              //InputStreamReader isr=new InputStreamReader(is);
	              //BufferedReader br=new BufferedReader(isr);
	              
	              FileOutputStream fos=new FileOutputStream(fileName);
	              //String strLine;
	              //while((strLine=br.readLine())!=null)
	              int data;
	              while((data=is.read())!=-1)
	              {
//	                fos.write(strLine.getBytes());
	            	/**
	            	 * 按行讀取的時候必須有此句,因為按行讀取的時候,每次對一行,并不會
	            	 * 把行分割符號寫入輸出流,需要我們手動添加
	            	 * 
	            	 */
	  //            fos.write(line.getBytes());
	                fos.write(data);
	              }
	              //br.close();
	              is.close();
	              fos.close();
	            }
	            catch (Exception ex) {
	              ex.printStackTrace();
	            }

	          }
	        });
	    jf.addWindowListener(new WindowAdapter() {
	         public void windowClosing(WindowEvent e) {
	           System.exit(0);
	         }
	       });
	    jf.show();
	  }
}

  

?

?

?

啟動TOMCAT,啟動應用程序,下載 /bz/images 應用下的圖片文件到 測試程序的根路徑下

?

?

?

?

成功將服務器上/bz/images/下的一個圖片文件下載到本程序的 根路徑下!

?

?

發(fā)揮:

?

此程序以后可以應用到 從另外一個遠端的服務器上下載文件,而不需要走web層,從response對象中得到輸出流

?

URL與URI


更多文章、技術(shù)交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論