android下文件下载

public static void downFile(final String url){
        new Thread(){
            public void run(){
            	FileOutputStream os=null;
            	try{
            		InputStream input=null;  
            		URLConnection httpUrlConnection= new URL(url).openConnection();
            		//int contentLength = httpUrlConnection.getContentLength();
                    input =httpUrlConnection.getInputStream();
        			File file = new File("C:\\Users\\Administrator\\Desktop\\Apknew.apk");
        			//假设目标文件已经存在。则删除。产生覆盖旧文件的效果
        			if(file.exists())
        			{
        			    file.delete();
        			}
        			os = new FileOutputStream(file);
        			byte[] buffer  = new byte[4*1024];  
        			// 读取到的数据长度   
        	         int len;
                    while((len=input.read(buffer)) != -1){  
                    	os.write(buffer,0,len);  //这里不能写成os.write(buffer)
                    }
                    os.flush();
                    os.close();  
        	    input.close();//这里一定不能忘记关闭输入流
        			//Log.v("cmd", "文件完成下载,路径为:"+file.getAbsolutePath());
                    //update();
        		System.out.println("完成下载");
                    
                }  catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally{
                	
                }
            }
        }.start();
    }

近期做项目用到文件下载。于是乎百度了N多下载代码,然后照抄,我这里是用来下载apk的,重复多次都是文件能够下载,但安装apk是出现解析包错误。

经耐心检查发现两处错误

1、input输入流忘记关闭了

2、os.write(buffer,0,len)写成了os.write(buffer)  百度出来的好多都是这样写的,并且Eclipse也不报错  到底什么原因期待大神指点啊!


你可能感兴趣的:(android下文件下载)