手机显示图片否则网上下载

来源:互联网 发布:mysql安装永远未响应 编辑:程序博客网 时间:2024/04/16 15:59

        新学安卓,老师就给布置了个任务,“手机显示本地图片,如果显示不出来,网上下载图片”。

这个题目有两个关键点

1.判断本地文件是否存在

2,网上下载图片

对于第一条,,百度加自己总结后得出应该用流的方式。。

public static void ShowImg(String uri, ImageView iv) throws IOException {    
        FileInputStream fs = new FileInputStream(uri); 
        BufferedInputStream bs = new BufferedInputStream(fs); 
        Bitmap btp = BitmapFactory.decodeStream(bs); 
        iv.setImageBitmap(btp); 
        bs.close(); 
        fs.close(); 
        btp = null;      

结合题目要求得到如下的代码

private boolean openfile()//判断读取的流文件是否为空
   {
    boolean b=false;
    try{
     FileInputStream fis = openFileInput(FILE_NAME);
     byte[] buff = new byte[1024];
     int hasRead = 0;
     StringBuilder sb = new StringBuilder("");
   // 读取文件内容
   while ((hasRead = fis.read(buff)) > 0)
   {
    sb.append(new String(buff, 0, hasRead));
   }
   if(sb.length()!=0)
   {
      b=true;//输入流为空
   }
   else
   {
    
   }
    }

接下来是网上下载图片,我们的教科书上这部份有介绍,因此很快就写好了

URL url = new URL("http://www.baidu.com/img/bdlogo.gif");
      // 打开该URL对应的资源的输入流
      InputStream is = url.openStream();
      // 从InputStream中解析出图片
      bitmap = BitmapFactory.decodeStream(is);
      // 发送消息、通知UI组件显示该图片
      handler.sendEmptyMessage(0x123);
      is.close();
      // 再次打开URL对应的资源的输入流
      is = url.openStream();
      // 打开手机文件对应的输出流
      @SuppressWarnings("deprecation")
      OutputStream os = openFileOutput("bdlogo.gif"
       , MODE_WORLD_READABLE);
      byte[] buff = new byte[1024];
      int hasRead = 0;
      // 将URL对应的资源下载到本地
      while((hasRead = is.read(buff)) > 0)
      {
       os.write(buff, 0 , hasRead);
      }
      is.close();
      os.close()

最后综合一下就会得到想要的程序代码。。。其实很多时候要理清思路,,再一步步解决。。。。这是我做题的过程,,,希望同是初学的人看后能有所收获。。。

0 0