在本地new JFrame对象,然后显示指定URL的网络上的图片,代码如下:
- 利用指定的URL在本地显示网络上图片的例子
- import java.io.BufferedInputStream;
- import java.io.ByteArrayOutputStream;
- import java.net.URL;
- import javax.swing.ImageIcon;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- /*
- 在控制台打印指定URL的图片
- */
- public class URLdemo1 {
- public static void main(String[] args) throws Exception {
- //图片的网络地址
- URL url=new URL("http://i2.sinaimg.cn/dy/870/2012/1201/U8843P1T870D1F22365DT20130420222132.jpg");
- BufferedInputStream bis=new BufferedInputStream(url.openStream());
- //字节数组输出流,将所有内容放在字节数组中
- ByteArrayOutputStream baos=new ByteArrayOutputStream();
- int i;
- while((i=bis.read())!=-1){
- baos.write(i);
- }
- bis.close();
- JFrame jf=new JFrame("图片显示窗体");
- jf.setBounds(30, 30, 300, 300);
- //通过ImageIcon将字节数组组解码为图片,放入JLabel组件中
- JLabel labImg=new JLabel(new ImageIcon(baos.toByteArray()));
- jf.getContentPane().add(labImg);
- jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- jf.setVisible(true);
- }
- }
程序运行的结果如下:
以上这个代码可以用在一些联网的软件中,比如在无网络时,显示软件打包好的图片,而连接网络时可以提示用户有更多的图片可以显示。哦。。貌似在哪见过这个应用?是的,你见过,搜狗壁纸还记得不?是不是可以这样来实现呢?
下面再举一个使用URL的例子:将新浪新闻的首页HTML 代码打印在控制台(或是输出到指定的文本文件中)。代码如下:
- 1-2 一个将新浪新闻的首页HTML代码打印在控制台的例子
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.UnsupportedEncodingException;
- import java.net.MalformedURLException;
- import java.net.URL;
- //在控制台打印新浪新闻的首页HTML 代码
- public class URLdemo {
- public static void main(String[] args) throws UnsupportedEncodingException, IOException {
- URL url=new URL("http://news.sina.com.cn");
- BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream(),"GBK"));
- String s;
- while((s=br.readLine())!=null){
- System.out.println(s);
- }
- br.close(); // 关闭资源
- }
- }
如你所想,在执行后,在控制台打印出乱糟糟的一堆HTML的内容。而这些内容与你打开新浪新闻首页,通过查看源代码所得到的效果是一样的。
此时也可以将控制台打印的内容输出到指定的文本文档中,我的输出目录是F:\1.txt。
在代码的编辑部分,右击---->Run As ------>Run Configurations,选择”common”选项卡,在“Standard Input And Output”部分勾选“File”单选框,并制定输出目录,这样就可以将控制台的信息输出到指定的文件。这一点,在输出测试很长的代码时,会非常有用,因为控制台的缓存大小有限(有时候远远不能满足要求),我们就可以将控制信息输出到指定的目录下,可以利用现有的工具来查看,查找文件中的内容。
程序运行后在f盘的跟目录会产生文件1.txt,如图:
打开文件即可看到新浪新闻的首页HTML代码。