如何从服务器下载文件,并在SD卡上保存特定的文件夹中的Android?(How to downloa

2019-08-31 14:49发布

我在我的Android应用程序一个要求。 我需要在SD卡上的特定文件夹程序下载并保存文件。 我已经开发的源代码,这是

String DownloadUrl = "http://myexample.com/android/";
     String fileName = "myclock_db.db";

    DownloadDatabase(DownloadUrl,fileName);

    // and the method is

public void DownloadDatabase(String DownloadUrl, String fileName) {
    try {
        File root = android.os.Environment.getExternalStorageDirectory();
        File dir = new File(root.getAbsolutePath() + "/myclock/databases");
        if(dir.exists() == false){
             dir.mkdirs();  
        }

        URL url = new URL("http://myexample.com/android/");
        File file = new File(dir,fileName);

        long startTime = System.currentTimeMillis();
        Log.d("DownloadManager" , "download url:" +url);
        Log.d("DownloadManager" , "download file name:" + fileName);

        URLConnection uconn = url.openConnection();
        uconn.setReadTimeout(TIMEOUT_CONNECTION);
        uconn.setConnectTimeout(TIMEOUT_SOCKET);

        InputStream is = uconn.getInputStream();
        BufferedInputStream bufferinstream = new BufferedInputStream(is);

        ByteArrayBuffer baf = new ByteArrayBuffer(5000);
        int current = 0;
        while((current = bufferinstream.read()) != -1){
            baf.append((byte) current);
        }

        FileOutputStream fos = new FileOutputStream( file);
        fos.write(baf.toByteArray());
        fos.flush();
        fos.close();
        Log.d("DownloadManager" , "download ready in" + ((System.currentTimeMillis() - startTime)/1000) + "sec");
        int dotindex = fileName.lastIndexOf('.');
        if(dotindex>=0){
            fileName = fileName.substring(0,dotindex);

    }
    catch(IOException e) {
        Log.d("DownloadManager" , "Error:" + e);
    }

}

现在的问题是,只有文件名myclock_db.db在路径保存空文件。 但我需要下载和保存文件的内容在特定的文件夹。 试了几种方法来获取文件下载,但我不能。

Answer 1:

您的下载网址是不是任何文件的链接。 这是一个目录。 请确保它的文件和存在。 另外,请检查您的logcat窗口错误日志。 还有一个建议,它始终是更好地在catch块代替原木做的printStackTrace()。 它给出了错误的更详细视图。

改变这一行:

    URL url = new URL("http://myexample.com/android/");

至:

    URL url = new URL("http://myexample.com/android/yourfilename.txt"); //some file url

接下来,在catch块,添加这一行:

e.printStackTrace();

另外,在目录路径,应该是这样的:

File dir = new File(root.getAbsolutePath() + "/mnt/sdcard/myclock/databases");

代替

File dir = new File(root.getAbsolutePath() + "/myclock/databases");

接下来,确保您已获得许可写入到Android清单外部存储。



文章来源: How to download a file from a server and save it in specific folder in SD card in Android?