• Andriod- 从网络下载文件保存到SDCARD里


    如何从网络下载图片保存到SDCARD里面,直接看代码,这个通用,应该可以应用成从网络下载文件保存到SDCARD内。

    package com.cts.testdwonloadimage.testdwonloadimage;
    
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.Environment;
    import android.os.Handler;
    import android.os.Message;
    import android.renderscript.ScriptGroup;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.widget.ImageView;
    
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    public class MainActivity extends AppCompatActivity {
    
        private ImageView mImageView;
        private File cache;
        private String imgPath="https://www.cnblogs.com/images/logo_small.gif";
    
    
        Handler handler=new Handler(new Handler.Callback() {
            @Override
            public boolean handleMessage(Message msg) {
                //显示
                Bitmap b=(Bitmap)msg.obj;
                mImageView.setImageBitmap(b);
                //保存至本地
                File imgFile=new File(cache,"woca.jpg");
                try {
                    BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(imgFile));
                    b.compress(Bitmap.CompressFormat.JPEG,80,bos);
                    bos.flush();
                    bos.close();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return false;
            }
        });
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mImageView=(ImageView)findViewById(R.id.mImageView);
    
            cache=new File(Environment.getExternalStorageDirectory(),"Test");
            if(!cache.exists()){
                cache.mkdirs();
            }
    
            new Thread(){
                @Override
                public void run() {
                    super.run();
    
                    HttpURLConnection conn = null;
                    InputStream is = null;
    
                    try{
                        URL url = new URL(imgPath);
                        conn=(HttpURLConnection) url.openConnection();
                        conn.setConnectTimeout(5000);
                        conn.setRequestMethod("GET");
                        if(conn.getResponseCode()==200){
                            is=conn.getInputStream();
                            Bitmap b= BitmapFactory.decodeStream(is);
                            //把输入流转化成bitmap格式,以msg形式发送至主线程
                            Message msg=new Message();
                            msg.obj=b;
                            handler.sendMessage(msg);
                        }
    
                    }catch (Exception e){
    
                        String strEx = e.getMessage();
                        strEx = strEx + "111";
                    }finally {
                        //conn.disconnect();
                    }
    
                }
            }.start();
    
        }
    }
    

    下载文件进一步

    package com.cts.testdwonloadimage.testdwonloadimage;
    
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.Environment;
    import android.os.Handler;
    import android.os.Message;
    import android.renderscript.ScriptGroup;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.Toast;
    
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.PrintStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    public class MainActivity extends AppCompatActivity {
    
        private ImageView mImageView;
        private File cache;
        private String imgPath = "https://www.cnblogs.com/images/logo_small.gif";
        private PrintStream ps = null;
        private FileOutputStream os = null;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Button btnTest = findViewById(R.id.btnTest);
            btnTest.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    btnTest();
                }
            });
        }
    
    
        public void btnTest() {
            cache = new File(Environment.getExternalStorageDirectory(), "Test");
            if (!cache.exists()) {
                cache.mkdirs();
            }
    
            new Thread() {
                @Override
                public void run() {
                    super.run();
    
                    HttpURLConnection conn = null;
                    InputStream is = null;
    
                    try {
                        URL url = new URL(imgPath);
                        conn = (HttpURLConnection) url.openConnection();
                        conn.setConnectTimeout(5000);
                        conn.setRequestMethod("GET");
                        if (conn.getResponseCode() == 200) {
                            is = conn.getInputStream();
    
                            if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
                                Toast.makeText(getApplicationContext(), "读取失败,SD存储卡不存在!", Toast.LENGTH_LONG).show();
                                return;
                            }
    
                            /*
                            Bitmap b= BitmapFactory.decodeStream(is);
                            //把输入流转化成bitmap格式,以msg形式发送至主线程
                            Message msg=new Message();
                            msg.obj=b;
                            handler.sendMessage(msg);
                            */
    
                            //初始化File
                            String FILENAME = "logo_smallaaa.gif";
                            String path = Environment.getExternalStorageDirectory().toString()
                                    + File.separator
                                    + "genwoxue"
                                    + File.separator
                                    + FILENAME;
                            File file = new File(path);
    
                            if (!file.getParentFile().exists())
                                file.getParentFile().mkdirs();
    
    
                            //ps = new PrintStream(new FileOutputStream(file));
                            os = new FileOutputStream(path);
    
                            byte[] buff = new byte[1024];
                            int hasRead = 0;
                            while ((hasRead = is.read(buff)) > 0) {
                                os.write(buff);
                            }
    
    
                        }
    
                    } catch (Exception e) {
    
                        String strEx = e.getMessage();
                        strEx = strEx + "111";
                    } finally {
                        //conn.disconnect();
                    }
    
                }
            }.start();
    
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    
            Toast.makeText(MainActivity.this, "下载成功", Toast.LENGTH_LONG).show();
        }
    
    }
  • 相关阅读:
    更新处理函数在对话框的菜单中不能工作
    msn登录时80048820错误
    C#编程指南:使用属性
    sqlserver中''与null的区别
    IP地址与主机名识别问题
    给EXCEL表格奇偶行设置不同的背景颜色
    sqlserver2000发布订阅
    Excel数据导入到Sqlserver2000
    SQLSERVER 获取时间 Convert函数的应用
    对路径“C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\aa\……”的访问被拒绝
  • 原文地址:https://www.cnblogs.com/cxeye/p/12706015.html
Copyright © 2020-2023  润新知