注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

姑射道人的博客

博客新地址:nixuchen.com

 
 
 

日志

 
 

文件下载,io流  

2011-11-12 20:25:22|  分类: android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
path,String fileName,InputStream input){
                File file=null;
                OutputStream output=null;
                try{
             
               creatSDDir(path); //调用creatSDDir方法创建在SD卡路径下的文件夹        
                        
        File f=creatSDFile(path+fileName);//创建完文件夹再创建文件
        output=new FileOutputStream(f);//这里使用字节流 为的是能写入不同类型的文件
        byte buffer []=new byte[4*1024];//声明BYTE数组并给出数组的大小,这里其实限制了下载文件的大小为4MB
                        
        while((input.read(buffer))!=-1){
               //input是传入的参数,也就是有一个文件被传进来,首先在判断中我们是读它并赋值给byte数组,循环内就是写入它
        output.write(buffer);//再将byte数组中的东西写到File f
        }
        
                file=new File(path);//返回的是一个File对象,参数是一个路径
        }catch(Exception e){
                e.printStackTrace();
        }finally{
                try{
                        output.close();
                }catch(Exception e){
                        e.printStackTrace();
                }
        }
                
        return file;//返回File对象

-----------------------mars老师的HttpDownloader文件----------------------------------------
public class HttpDownloader {
        private URL url=null;
        
        
        public String download(String urlStr){
                //StringBuffer这个类能追加字符到字符串后面
                StringBuffer sb=new StringBuffer();
                String line=null;//声明一个字符串变量line
                BufferedReader buffer=null;//字符流
                try{
                        url=new URL(urlStr);//利用URL的构造方法传递一个url参数
                        //打开HTTP的链接才可以在网络上进行传输
                        HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();
                        //BufferedReader,记得如何一个流接一个流吧?那样才流类才会更加强大!
                        buffer=new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
                        
                        //BufferedReader的readline方法一次性读一行
                        //下面是将读到的一行赋值给line字符串再判断是否为空,我觉得可以用三元运算解决
                        //好像不行..是while循环
                        while((line=buffer.readLine())!=null){
                                sb.append(line);
                                
                        }
                        
                }catch(Exception e){
                        e.printStackTrace();
                }finally{
                        //最后关闭流类!BufferedWrite才有flush()方法..BufferedReader是没有的
                        try{
                                buffer.close();
                        }catch(Exception e){
                                e.printStackTrace();
                        }
                }
                //最后返回BufferedString
                return sb.toString();
                
        }
        
        //返回整形-1代表下载文件出错
        //0:代表下载文件成功
        //1:代表文件存在
        public int downFile(String urlStr,String path,String fileName){
                //声明一个inputStream对象...读出数据
                InputStream inputStream=null;
                
                try{
                        //自己写的类
                        FileUtils fileUtils=new FileUtils();
                        //利用自己写的方法判断文件是否存在,是就返回1
                        if(fileUtils.isFileExist(path+fileName)){
                                return 1;
                        }else{
                                //在本类中封装了一个方法getInputStreamFromUrl方法用来
                                //返回由HttpURLConnection获得的InputStream对象
                                inputStream=getInputStreamFromUrl(urlStr);
                                //write2SDFromInput是获得一个file对象,该对象实际是放置文件的一个路径
                                File resultFile=fileUtils.write2SDFromInput(path,fileName,inputStream);
                                //判断如果该路径不存在则返回-1;
                                if(resultFile==null){
                                        return -1;
                                }
                        }
                }catch(Exception e){
                        e.printStackTrace();
                        return -1;
                }finally{
                        try{
                                inputStream.close();
                        }catch(Exception e){
                                e.printStackTrace();
                        }
                }
                return 0;//返回0
        }
        
        
        public InputStream getInputStreamFromUrl(String urlStr)
                throws MalformedURLException,IOException{
                url=new URL(urlStr);
                HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();
                InputStream inputStream=urlConn.getInputStream();
                
                return inputStream;
        }
  评论这张
 
阅读(794)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017