package udp;
import java.net.* ;
import javax.swing.* ;
import java.awt.event.*;
import java.io.* ;
public class Download
{
public static void main(String[]args)
{
JFrame jf=new JFrame("XiaoWei DownLoad Software") ;
jf.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0); //退出程序
}
});
jf.setSize(600,400);
jf.setLocation(200,300);
JPanel p=new JPanel() ; //面板默认是FlowLayout布局管理器
final JTextField j=new JTextField("Please Input DownLoad Address In This Area",40) ;
JLabel l=new JLabel("请输入下载地址:") ;
p.add(l);
p.add(j);
jf.getContentPane().add(p,"North");
final JTextArea t1=new JTextArea() ;
jf.getContentPane().add(t1,"Center");
JButton b=new JButton("DownLoad") ;
jf.getContentPane().add(b,"South") ;
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String s=j.getText(); //如果要在内部类中使用局部变量的话 要把局部变量设置为final类型 最终类型
try
{
String line=System.getProperty("line.separator") ;//获得与平台无关的换行
URL url=new URL(s);
URLConnection u=url.openConnection() ; //打开连接 获得URLConnection类的对象
t1.append("目标主机:" +url.getHost());
t1.append(line);
t1.append("主机缺省端口:"+url.getDefaultPort());
t1.append(line);
t1.append("目标类型:"+u.getContentType()) ;
t1.append(line);
t1.append("对象大小"+u.getContentLength());
InputStream in=u.getInputStream() ;//打开 输入流
InputStreamReader r=new InputStreamReader(in); //字节流到字符流转换的桥梁
BufferedReader br=new BufferedReader(r) ; //连接到bufferreader提供读取一行数据的功能
FileOutputStream fos=new FileOutputStream("D:\\1.html") ; //假如我们下载网页文件
String str ; //用String的好处是 读取到多少个字符 就会开辟多少的空间
while ((str=br.readLine())!=null) {
fos.write(str.getBytes()); //因为读取一行文本会忽略换行回车 那么实际读取的文件会小 所以应该加上 我们应该使用与系统无关的回车换行
fos.write(line.getBytes()); //最后写的文件比 实际文件大2个字节 是因为 我们在最后一次多写入了 回车 换行 2个字节
}
fos.close(); //关闭文件流
br.close();
r.close();
in.close(); //使用完流要关闭
}
catch(Exception xe)
{
xe.printStackTrace();
}
}
});
jf.show();
}
}
分享到:
相关推荐
本文将详细介绍如何使用Java中的`URL`和`URLConnection`类来实现多线程下载,同时深入解析其中涉及的关键概念和技术细节。 #### 一、URL与URLConnection简介 `URL`(Uniform Resource Locator)是统一资源定位符的...
在Java中进行网络编程时,经常会用到URL和URLConnection这两个类。它们位于***包中,是Java网络编程的核心组件。下面就详细介绍这两个类的使用方法和相关知识点。 ### URL类 URL类是统一资源定位符(Uniform ...
总结来说,Java中通过URL获取网络位置上的文件流涉及创建URL对象,建立连接,打开输入流,处理数据并关闭流。这个过程可以封装到工具类中,方便在不同场景下复用。在实际编程中,还需要考虑错误处理和性能优化。
通过使用 URL 类和 URLConnection 类,Java 程序可以连接到远程服务器,获取指定 URL 的内容。本文将详细介绍如何使用 Java 通过 URL 获取网页内容。 一、使用 URL 类获取网页内容 在 Java 中,URL 类是用于表示...
在Java编程语言中,`URL`(统一资源定位符)和`URLConnection`是网络编程中的核心类,用于访问和交互互联网上的资源。这篇博客文章可能深入解析了这两个类的使用和内部工作原理。 `URL`类是Java.net包中的一个关键...
java中用URLConnection类post方式提交表单是指在java应用程序中使用java.net.URLConnection类来实现POST方式的表单提交。POST方式是HTTP协议中的一种常见的请求方法,它允许客户端向服务器发送数据。下面是使用...
1. **获取URL内容**:使用java.net.URL和java.net.URLConnection类来建立与指定URL的连接,并获取输入流。 2. **读取输入流**:通过BufferedReader或InputStreamReader从URL的输入流中读取数据。 3. **写入本地文件*...
为了读取接口返回的字符串,我们可以使用`InputStreamReader`和`BufferedReader`从`URLConnection`的输入流读取数据。 ```java BufferedReader in = new BufferedReader(new InputStreamReader(connection....
本教程将详细讲解如何利用Java的URL类来实现文件的下载功能,同时也会提及到ImageIO类在处理图像下载中的应用。 首先,我们需要了解URL的基本构造。一个典型的URL格式如下: ``` 协议://主机名[:端口号]/路径[?...
通过在网络连接的输入流上读取数据,然后将数据写入本地文件的输出流,实现文件的下载。 4. **多线程**:为了提高用户体验,通常会使用多线程技术实现文件的异步下载。在Java中,可以创建`Thread`对象或者使用`...
当需要发送请求体时,我们还需要设置允许输入流(setDoOutput(true)): ```java connection.setDoOutput(true); ``` 然后,我们可以使用`OutputStream`写出请求数据: ```java try (OutputStream os = ...
基于Java URL和URLConnection详解 Java URL和URLConnection是Java语言中两个...通过这篇文章,我们可以了解到Java URL和URLConnection类的使用方法和区别,掌握它们的使用方法可以提高Java开发者的开发效率和质量。
总之,Java URL下载器实例是一个实践性强、教育价值高的项目,它结合了Java的基础知识和进阶特性,是学习和掌握网络编程、多线程以及文件操作等技能的优秀案例。通过深入理解并实践这个下载器,开发者可以提升自己的...
【Java下载器 用 Java 编写的URL下载器 workspace】是一个项目,主要目的是实现一个基于Java编程语言的URL资源下载工具。...通过分析和运行提供的源代码,开发者可以深入理解如何在Java中实现一个功能完备的URL下载器。
### 通过HTTP协议的URL下载文件(Java实现) 在现代软件开发中,通过网络协议(如HTTP/HTTPS)获取远程资源是一项基本而重要的任务。Java作为一种广泛应用的编程语言,提供了丰富的API来支持这类操作。本文将详细...
在Java编程中,实现文件下载是一项常见的任务,尤其在Web应用程序中。以下是对给定代码的详细解释,以及关于Java文件下载的相关知识点。 首先,`down`方法接收两个参数:一个`File`对象`f`表示目标下载文件的路径,...
不过,基础的URL访问和输入流读取是所有网络编程的基础,理解这些概念对于后续的学习至关重要。 总结一下,Java获取HTML源文件的关键步骤包括: 1. 创建`URL`对象表示目标网页。 2. 打开与URL的连接,获取`...
// 输入流 InputStream is = con.getInputStream(); // 1K的数据缓冲 byte[] bs = new byte[1024]; // 读取到的数据长度 int len; // 输出的文件流 OutputStream os = new FileOutputStream...
- **输入流与输出流**:`URLConnection`提供了`getInputStream()`和`getOutputStream()`方法,分别用于读取服务器响应和向服务器发送数据。 - **缓冲流**:为了提高效率,通常会使用`BufferedReader`或`...