废话就不多说了直接看下怎么实现

1.添加相关的权限,设备API大于6.0时需要主动申请权限

<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" />
//设备API大于6.0时,主动申请权限    private void requestPermission(Activity context) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {            if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)                    != PackageManager.PERMISSION_GRANTED) {                ActivityCompat.requestPermissions(context, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,                        Manifest.permission.READ_EXTERNAL_STORAGE}, 0);            }        }    }

2.连接服务器获取文件

    /** * 从服务器下载文件 * @param path 下载文件的地址 * @param FileName 文件名字 */    public static void downLoad(final String path, final String FileName) {        new Thread(new Runnable() {            @Override            public void run() {                try {                    URL url = new URL(path);                    HttpURLConnection con = (HttpURLConnection) url.openConnection();                    con.setReadTimeout(5000);                    con.setConnectTimeout(5000);                    con.setRequestProperty("Charset", "UTF-8");                    con.setRequestMethod("GET");                    if (con.getResponseCode() == 200) {                        InputStream is = con.getInputStream();//获取输入流                        FileOutputStream fileOutputStream = null;//文件输出流                        if (is != null) {                            FileUtils fileUtils = new FileUtils();                            fileOutputStream = new FileOutputStream(fileUtils.createFile(FileName));//指定文件保存路径,代码看下一步                            byte[] buf = new byte[1024];                            int ch;                            while ((ch = is.read(buf)) != -1) {                                fileOutputStream.write(buf, 0, ch);//将获取到的流写入文件中                            }                        }                        if (fileOutputStream != null) {                            fileOutputStream.flush();                            fileOutputStream.close();                        }                    }                } catch (Exception e) {                    e.printStackTrace();                }            }        }).start();    }

3.创建文件保存路径

public class FileUtils {    private String path = Environment.getExternalStorageDirectory().toString() + "/shidoe";    public FileUtils() {        File file = new File(path);        /** *如果文件夹不存在就创建 */        if (!file.exists()) {            file.mkdirs();        }    }    /** * 创建一个文件 * @param FileName 文件名 * @return */    public File createFile(String FileName) {        return new File(path, FileName);    }}

4.下载示例

downLoad("http://www.shidoe.com/shidoe/Edition/upfile/04.png", "che.png");//下载完成后就可以在手机目录里查看到了

5.动态获取需要保存文件的文件名

//获取 / 最后一次出现的位置,然后位置+1截取剩余的就是文件名了String s = "http://www.shidoe.com/shidoe/Edition/upfile/04.png";        int i = s.lastIndexOf("/");        String FileName= s.substring(i + 1);

6.加载刚下载好的图片显示在界面上还是非常easy的

 private void loadImage() {        String path = Environment.getExternalStorageDirectory().toString() + "/shidoe";        try {            Bitmap bmp = BitmapFactory.decodeStream(new FileInputStream(new File(path, "che.png")));            iv.setImageBitmap(bmp);        } catch (FileNotFoundException e) {            e.printStackTrace();        }    }

如果帮到了你就帮忙顶一下吧

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. Webview之H5页面调用android的图库及文件管理
  6. repo下载android出现fatal: Unable to find remote helper for '
  7. android启动中遇到的2个问题
  8. android文件的写入与读取---简单的文本读写context.openFileInpu
  9. android--使用NDK-build生成so

随机推荐

  1. 更简单的学习Android事件分发
  2. Android的TextView/EditText使用Characte
  3. Android中的文件读写全面总结
  4. 直播软件源码Android(安卓)shape半圆,1/4
  5. Android Studio之导入外部jar包
  6. Android任务切换方法
  7. android中圆角的bug
  8. 关于android工程中R.java不自动生成的问
  9. 解析 Android(安卓)异步消息机制,深入了解
  10. Android TextView的滑动