当前位置: 代码迷 >> Java相关 >> InputStream问题
  详细解决方案

InputStream问题

热度:104   发布时间:2010-10-26 22:28:11.0
InputStream问题
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class Test{
public static void main(String[] args){
   try {
      URL url = new URL("http://hiphotos.baidu.com/%B4%BA%D6%C1%C7%EF%C1%A7/pic/item/9dc34434786980a3d1a2d3e3.jpg");
      URLConnection con = url.openConnection();
      long size = con.getContentLength();
      System.out.println(size);
      InputStream in=url.openStream()
      //上面的方法url.openStream()返回一个InputStream一个对象,但是InputStream是一个抽象类,不是说抽象类不能实例化吗,这里为什么InputStream 又可以实例化。
      FileOutputStream out = new FileOutputStream("D://17266.gif");
      int i=in.read();
      while(i!=-1){
         out.write(i);
          i=in.read();
      }
      in.close();
      out.close();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    }
}



[ 本帖最后由 chrispull 于 2010-10-26 22:30 编辑 ]
搜索更多相关的解决方案: InputStream  

----------------解决方案--------------------------------------------------------
定义成 InputStream , 赋值可以是实现了该类的任何子类, 你调试一下就知道实际上是哪个类了.
----------------解决方案--------------------------------------------------------
哦明白了。url.openStream()方法里真正返回的是FilterInputStream类型(它是InputStream的子类),但是该方法的返回值是InputStream类型的,所以就把FilterInputStream类型强制转换成它的父类InputStream类型。其实其实这里就是使用了多态机制
----------------解决方案--------------------------------------------------------
  相关解决方案