首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android下载二进制文件问题

Android下载二进制文件问题
EN

Stack Overflow用户
提问于 2009-02-23 04:18:33
回答 5查看 80.5K关注 0票数 72

我在从互联网下载我的应用程序中的二进制文件(视频)时遇到了问题。在Quicktime中,如果我直接下载它,它可以正常工作,但通过我的应用程序,不知何故它会变得一团糟(即使它们在文本编辑器中看起来完全一样)。下面是一个示例:

代码语言:javascript
复制
    URL u = new URL("http://www.path.to/a.mp4?video");
    HttpURLConnection c = (HttpURLConnection) u.openConnection();
    c.setRequestMethod("GET");
    c.setDoOutput(true);
    c.connect();
    FileOutputStream f = new FileOutputStream(new File(root,"Video.mp4"));


    InputStream in = c.getInputStream();

    byte[] buffer = new byte[1024];
    int len1 = 0;
    while ( (len1 = in.read(buffer)) > 0 ) {
         f.write(buffer);
    }
    f.close();
EN

回答 5

Stack Overflow用户

发布于 2011-05-12 23:04:30

代码语言:javascript
复制
new DefaultHttpClient().execute(new HttpGet("http://www.path.to/a.mp4?video"))
        .getEntity().writeTo(
                new FileOutputStream(new File(root,"Video.mp4")));
票数 29
EN

Stack Overflow用户

发布于 2009-02-23 04:43:43

其中一个问题是您对缓冲区的读取。如果输入流的每次读取不是1024的精确倍数,那么您将复制坏数据。使用:

代码语言:javascript
复制
byte[] buffer = new byte[1024];
int len1 = 0;
while ( (len1 = in.read(buffer)) != -1 ) {
  f.write(buffer,0, len1);
}
票数 16
EN

Stack Overflow用户

发布于 2010-12-10 14:13:42

代码语言:javascript
复制
 public class download extends Activity {

     private static String fileName = "file.3gp";
     private static final String MY_URL = "Your download url goes here";

     @Override
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        try {
            URL url = new URL(MY_URL);
            HttpURLConnection c = (HttpURLConnection) url.openConnection();
            c.setRequestMethod("GET");
            c.setDoOutput(true);
            c.connect();

            String PATH = Environment.getExternalStorageDirectory()
                + "/download/";
            Log.d("Abhan", "PATH: " + PATH);
            File file = new File(PATH);
            if(!file.exists()) {
               file.mkdirs();
            }
            File outputFile = new File(file, fileName);
            FileOutputStream fos = new FileOutputStream(outputFile);
            InputStream is = c.getInputStream();
            byte[] buffer = new byte[1024];
            int len1 = 0;
            while ((len1 = is.read(buffer)) != -1) {
                fos.write(buffer, 0, len1);
            }
            fos.flush();
            fos.close();
            is.close();
        } catch (IOException e) {
            Log.e("Abhan", "Error: " + e);
        }
        Log.i("Abhan", "Check Your File.");
    } 
}
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/576513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档