zoukankan      html  css  js  c++  java
  • 使用URL读取网络资源

    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.URL;

    import android.os.Bundle;
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.view.Menu;
    import android.widget.ImageView;

    public class URLTest extends Activity {
      ImageView show;

      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_urltest);
        show = (ImageView) findViewById(R.id.show);
        //定义一个URL对象
        try {
          URL url = new URL("http://www.crazyit.org/attachments" +
              "month_1008/20100812_7763e970f822325bf019ELVym8tW3A.png");
          //打开该URL对应的资源的输入流
          InputStream is = url.openStream();
          //从InputStream中解析出图片
          Bitmap bitmap = BitmapFactory.decodeStream(is);
          //使用ImageView显示该图片
          show.setImageBitmap(bitmap);
          is.close();
          //再次打开URL对应的资源的输入流
          is = url.openStream();
          //打开手机文件对应的输出流
          OutputStream os = openFileOutput("crazyit.png", 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();
        } catch (Exception e) {
          e.printStackTrace();
        }
      }

    }

    上面的程序两次调用了URL对象的openStream()方法打开URL对应的资源的输入流,程序第一次使用BitmapFactory的decodeStream(InputStream)方法来解析该输入流中的图片;第二次则使用IO将输入流中的图片下载到本地。

    该程序同样需要访问互联网,因此需要授予该程序访问网络的权限,也就是需要在AndroidManifest.xml文件中增加如下授权代码。

    <!-- 授权访问网络 -->
    <uses-permission android:name="android.permission.INTERNET"/>

    运行该程序不仅可以显示该URL对象所对应的图片,而且还会在手机文件系统的/data/data/org.crazyit.net/files/目录下生成crazyit.png图片,该图片就是通过URL从网络上下载的图片。

  • 相关阅读:
    使用线程的场景
    进程和线程的区别
    线程基础
    Python程序中的进程操作-进程池(multiprocess.Pool)
    Python程序中的进程操作-进程间数据共享(multiprocess.Manager)
    Python程序中的进程操作-进程间通信(multiprocess.Queue)
    Python程序中的进程操作-进程同步(multiprocess.Lock)
    Python程序中的进程操作-开启多进程(multiprocess.process)
    关于<a>标签的onclick与href的执行顺序
    SQLServer2008不允许保存更改
  • 原文地址:https://www.cnblogs.com/jiww/p/5634073.html
Copyright © 2011-2022 走看看