Android,下载.txt文件并在内部保存

时间:2012-12-14 13:22:22

标签: java android file download

就像标题所述,我只是想下载一个test.txt文件,下面的url并在内部保存,理想情况下是在drawable中。

我一直在尝试修改此工作,但没有成功我一直“无法下载null”错误

int count;          
try {
    URL url = new URL("https://www.darkliteempire.gaming.multiplay.co.uk/testdownload.txt");
    URLConnection conexion = url.openConnection();
    conexion.connect();
    int lenghtOfFile = conexion.getContentLength();
    InputStream is = url.openStream();
    File testDirectory = new File(Environment.getExternalStorageDirectory() + "/Download");

    if (!testDirectory.exists()) {
        testDirectory.mkdir();
    }

    FileOutputStream fos = new FileOutputStream(testDirectory + "/test.txt");
    byte data[] = new byte[1024];
    long total = 0;
    int progress = 0;

    while ((count = is.read(data)) != -1) {
        total += count;

        int progress_temp = (int) total * 100 / lenghtOfFile;

        fos.write(data, 0, count);
    }

    is.close();
    fos.close();
} catch (Exception e) {
    Log.e("ERROR DOWNLOADING", "Unable to download" + e.getMessage());
}

必须有一种更简单的方法吗? 文件本身很小,可能有3或4行文字,所以我不需要任何花哨的东西

2 个答案:

答案 0 :(得分:1)

请更新以下代码行并写下有效的网址。

URL url = new URL("https://www.http://darkliteempire.gaming.multiplay.co.uk/testdownload.txt");

写完有效网址后,你的代码行看起来像这样。

URL url = new URL("http://www.darkliteempire.gaming.multiplay.co.uk/testdownload.txt");

它将解决您的问题。

答案 1 :(得分:0)

使用AQuery library可以获得非常简单的内容。此外,您还可以利用其他很酷的功能来缩短代码。

http://code.google.com/p/android-query/wiki/AsyncAPI

String url = "https://picasaweb.google.com/data/feed/base/featured?max-results=16";             

File ext = Environment.getExternalStorageDirectory();
File target = new File(ext, "aquery/myfolder/photos.xml");              
aq.progress(R.id.progress).download(url, target, new AjaxCallback<File>(){            
        public void callback(String url, File file, AjaxStatus status) {                    
                if(file != null){
                        showResult("File:" + file.length() + ":" + file, status);
                }else{
                        showResult("Failed", status);
                }
        }            
});