从网络上下载文件到sd卡上

   String SDPATH = Environment.getExternalStorageDirectory() + "/";   String path = SDPATH + "files/";   /**
     * 此文件支持下载docx,pdf,xls,jpg,
     * @param urlStr
     * @param path
     * @param fileName
     * @return
     *         -1:文件下载出错
     *         0:文件下载成功
     *         1:文件已经存在
     */
    public int downFile(String urlStr, String path, String fileName) {
        InputStream inputStream = null;
        HttpURLConnection urlConn = null;
        try {
            // 判断文件是否存在
            if (FileUtil.isFileExist(path + fileName)) {
                System.out.println("====File==exits===");
                return 1;
            } else {
                url = new URL(urlStr);
                urlConn = (HttpURLConnection) url.openConnection();
                // 设置请求方式为"GET"
                urlConn.setRequestMethod("GET");
                // 超时响应时间为5秒
                urlConn.setConnectTimeout(5 * 1000);

                // 得到io输入流,即从url读取到的数据
                inputStream = urlConn.getInputStream();
                // 从input流中将文件写入SD卡中
                File resultFile = FileUtil.write2SDFromInput(path, fileName, inputStream);
                if (resultFile == null) {
                    return -1;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            return -1;
        } finally {
            try {
                if (inputStream != null) {
                    inputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return 0;
    }
/**
     * 将一个InputStream里面的数据写入到SD卡中
     *
     * @param path
     * @param fileName
     * @param input
     * @return
     */
    public static File write2SDFromInput(String path, String fileName, InputStream inputStream) {
        File file = null;
        OutputStream outputStream = null;
        try {
            // 创建文件,父目录若无,则会去先创建
            file = createFile(path + fileName);

            // 开启输出流,准备写入文件
            outputStream = new FileOutputStream(file);
            // 缓冲区
            byte[] buffer = new byte[FILESIZE];
            int bytesRead = 0;
            // 使用一个输入流从buffer里把数据读取出来
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                // outputStream.write(buffer);
                // 每次读多少,写多少进去,如果没有加bytesRead,则会出现随机将每一行后面的空数据也写入,造成一些文件格式的损坏和文件大小增大。
                outputStream.write(buffer, 0, bytesRead);
            }
            // 关闭输入流
            inputStream.close();
            outputStream.flush();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return file;
    }
时间: 2024-10-08 08:45:21

从网络上下载文件到sd卡上的相关文章

Android下载文件到SD卡

HttpURLConnection 上传方式: 尝试理解这两种流的区别: InputStreamReader 的读取方式: 1 //创建一个URL对象 2 URL url = new URL(urlString); 3 4 //创建一个HttpURLConnection 5 HttpURLConnetion urlConn = (HttpURLConnection)url.openConnecton(); 6 7 //读取数据 8 BufferReader buffer = new Buffer

从网络上下载文件

文件的下载: 使用HTTP协议下载文件 ·创建一个HttpURLConnection对象 HttpURLConnection urlConnection=(HttpURLConnection)url.openConnection(); ·获得一个InputStream对象 urlConn.getInputStream() ·访问网络的权限 android.permission.INTERNET ·从网络上下载文件夹 HttpDownload.java中的代码: public class Http

用进度条显示从网络上下载文件进度

/* * 根据上课的案例,利用进度条控件程序进行下载操作.... */public class Aty_HttpDownLoad_ProgressBar extends Activity { private ProgressBar pB; private TextView tv_progress; private static final int DOWNLOADING=1; private static final int DOWNLOAD_SUCCESS=2; private double

SD卡上读写文件

读写SD卡上的文件: 如果存储大型文件,例如视频.音乐.文档等.存储到手机内存中是不明智的,一般我们会把这些大型文件存储在SD卡中. 首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置: 在AndroidManifest.xml中加入访问SDCard的权限如下: <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.permission

JWebFileTrans(JDownload): 一款可以从网络上下载文件的小程序(二)

一  前言 本文是上一篇博客JWebFileTrans:一款可以从网络上下载文件的小程序(一)的续集.此篇博客主要在上一篇的基础上加入了断点续传的功能,用户在下载中途停止下载后,下次可以读取断点文件,接着上次已经下载的部分文件继续下载.另外将程序名从JWebFileTrans更改为JDownload,并从github的utility repository中独立出来专门维护,后续会添加多线程.ftp下载等功能.JDownload的github链接请点击JDownload源代码 . 另外时隔三个月后

android 操作SD卡上的文件

(1)说明:操作SD卡上的文件需要加入以下权限 在SD卡上创建和删除文件权限 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 在SD卡上写入数据的权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 在sd卡上的文件操作和我上一篇文

在SD卡上创建/删除文件夹 使用DDMS透视图管理SD卡

在SD卡上创建和删除文件夹 基本步骤: (1):在控制台中输入adb shell命令,进入shell控制台. (2):在shell控制台中输入cd sdcard 命令,进入SD卡中. (3):在shell控制台中输入ls -al 命令,查看sd卡中包含的全部文件和文件夹. (4):在shell控制台中输入mkdir mrsoft 命令,创建一个名为mrsoft的文件夹. (5):在shell控制台中输入ls -al命令,查看SD卡中包含的全部文件和文件夹.可以看到文件夹mrsoft已经创建. (

Android SD卡上文件

1. 得到存储设备的目录:/SDCARD(一般情况下) SDPATH=Environment.getExternalStorageDirectory()+"/"; 2. 判断SD卡上的文件夹是否存在:通过File对象的exists()方法. /** * 判断文件是否已经存在; * / public boolean checkFileExists(String filepath) { File file=new File(SDPATH+filepath); return file.exi

Android使用sqlliteOpenhelper更改数据库的存储路径放到SD卡上

假设使用默认的系统管理,默认放在包以下.比較省心.并且在卸载app后不会造成数据残留.可是这样也有一个问题.比方我做一个背单词的软件,那么当用户卸载掉这个app时,他辛辛苦苦下载的单词库也没了... 所以我想到的解决方式.就是把数据库路径改下.不放到包以下,放到SD卡上. 细致看看.还真不easy做,网上有人甚至去更改源代码.只是最后还是找到了解决方式: 查看SQLiteOpenHelper源代码.会发现有这样一段代码: if (mName == null) { db = SQLiteDatab