* URL(Uniform Resource Locator ),通用资源定位符。http://www.mybole.com.cn/index.asp就是一个URL。
*URI(Uniform Resource Identifier),通用资源标识符。
*URI纯粹是个符号结构,用于指定构成Web资源的字符串的各个不同部分。URL是一种特殊类型的URI,它包含了用于查找某个资源的足够信息。其它的URI,例如:mailto:myoble@mybole.com.cn则不属于定位符,因为它里面不存在根据该标识符来查找的任何数据。这种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的内容:"+str);
String fileName=str.substring(str.lastIndexOf("/")+1);
/*下载文件的名字*/
System.out.println("fileName:"+fileName);
try {
URL url=new URL(str);
URLConnection urlConn=url.openConnection();
/**
* 由于windos 系统的换行符是\r\n,linux 系统的换行符是\n,
* 为了通用我们可以使用系统属性的方式得到换行符
*
*/
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
* 为注释的部分为按字节读取,每次读一个字节 关键代码:(data=is.read())!=-1
*
* 文本和html等格式文件可以按行读取
* 图像声音文件必须按字节读取,因为这个时候已经没有 行 的概念
* 其实所有的文件都可以按字节读取,建议使用按字节读取
*/
//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/下的一个图片文件下载到本程序的 根路径下!
发挥:
此程序以后可以应用到 从另外一个远端的服务器上下载文件,而不需要走web层,从response对象中得到输出流
分享到:
相关推荐
### URI与URL的基础概念 #### 一、URI(Uniform Resource Identifier):统一资源标识符 在互联网技术领域中,URI是用于唯一标识一个资源的一种标准形式。它是一种抽象的概念,用以指代任何类型的资源,无论是实体...
URI-模板-模式-匹配器概述将 URL 与许多 RFC 6570 URI 模板级别 1 进行比较以找到匹配项。 代码是用Java编写的。 这解决了什么问题? 给定一个 URL,HTTP 服务器必须确定该 URL 是否与 URI 模板之一匹配。 一个用例...
在C++程序中,与URI和URL相关的任务通常涉及字符串操作,而Boost.URL库则为这些任务提供了高级抽象,避免了底层的字符串处理复杂性。 Boost.URL库的核心功能包括: 1. **解析**: Boost.URL库可以将一个完整的URL...
URI-模板-模式-匹配器概述 将 URL 与许多 RFC 6570 URI 模板级别 1 进行比较以找到匹配项。 代码是用Java编写的。 这解决了什么问题? 给定一个 URL,HTTP 服务器必须确定该 URL 是否与 URI 模板之一匹配。 一个用例...
URL类提供了一种简单的方式来定位和获取网络资源,而无需关心具体的协议细节、数据格式或与服务器的通信机制。Java会根据提供的URL自动处理这些细节。 ##### 2. 类结构 - **继承关系**:`URL` 类继承自 `java.lang....
### URI与URL的区别 虽然URL是一种URI,但并不是所有的URI都是URL。URL强调的是资源的位置及其访问方法,而URI更侧重于资源的唯一标识。例如,“mailto:example@example.com”是一个有效的URI,但它不是一个URL,...
7. **URL与URI的区别**: 虽然URL是一种特殊的URI(Uniform Resource Identifier),但两者还是有区别的。URI是资源的通用标识,而URL提供了获取该资源的具体路径。 8. **URL与HttpClient**: 在实际的网络编程中...
对java网络编程里的URL、URI研究,如果需要我也可以将研究上篇传上来
3.2.2 URL与URI 156 3.2.3 HTTP协议的PDU 159 3.2.4 B-S架构与HTTP协议封装 162 3.2.5 HTTP的扩展协议WebDAV 164 3.3 JDBC/ODBC协议 167 3.3.1 数据库应用系统及其C-S架构 167 3.3.2 数据库系统 168 3.3.3 ...
对比两个url是否一致,对比两个URL是否一致,包括端口,方法等,非常好用
- **链接生成**:在构建动态网站时,Uri库可以轻松地生成带参数的链接,简化URL管理。 - **API设计**:在RESTful API设计中,正确处理和验证URI是至关重要的,Uri库为此提供了便利。 - **数据交换**:当应用程序...
1. **URL与URI的区别**:URL(统一资源定位符)是互联网上资源的唯一地址,包括协议、主机、端口和资源路径。URI(统一资源标识符)更广泛,不仅包含URL,还包含URN(统一资源名称),是一种用于标识资源的字符串,...
博客中的源码可能涵盖了如何解析Uri,提取查询参数,以及通过Uri与ContentProvider进行数据交互的过程。例如,使用`Uri.withAppendedPath()`添加路径,使用`Uri.encode()`和`Uri.decode()`进行URL编码解码。 7. **...
一、URI、URL和URN 二、URI和URL的区别及关系 简而言之,URI是标识某一个资源,而URL用位置来标识一个资源。 一、URI、URL和URN Web上地址的基本形式是URI,它有多种形式:常见的有URL和URN。 URI = Universal ...
总的来说,理解和区分URI与URL对于理解和开发Web应用程序至关重要。在编程或配置网络服务时,正确使用这两个概念能够确保资源的准确定位和访问。例如,在STRUTS配置文件中,URI可能用来定义一个动作或者资源的标识,...
3. **URL与URI转换**: - `File.toURI()`会将路径中的空格转换为"%20",并添加协议"file:/"。 - `File.toURL()`则简单地添加协议"file:/",不进行编码转换,保留原始路径形式。 4. **WSDLReader与路径**: - 在...
4. **URL与URI的理解**: - **URI(Uniform Resource Identifier)**:是统一资源标识符,用于唯一地标识网络上的任何资源。它通常包括访问资源的命名机制、主机名和资源名称。 - **URL(Uniform Resource Locator...
文章从HTTP的基本概念讲起,介绍了TCP/IP协议族、HTTP与TCP的区别与联系、URL与URI的概念,以及Web的三项构建技术。接着,详细解释了HTTP协议的主要特点、消息结构、状态码、GET和POST方法的区别,并探讨了HTTP协议...
URN 则与 URL 不同,它提供了一个独立于位置的资源名称,旨在为资源提供一个持久不变的标识,即使资源的位置或状态发生变化。URN 是一个全局唯一的标识,通常依赖于命名服务来查找具体的资源。 在Java中,URI和URL...