善知堂android学习笔记

Android 文件,I/O操作小结

一、权限:

 

  • <uses-permission android:name="android.permission.INTERNET"/> 
  • <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

二、下载:

  • public class HttpDownloader { 
  •      
  •     private URL url = null;  
  •      
  •     /** 
  •      * 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文本当中的内容 
  •      * 1.创建一个URL对象 
  •      * 2.通过URL对象,创建一个HttpURLConnection对象 
  •      * 3.得到InputStream 
  •      * 4.从InputStream当中读取数据 
  •      * @param urlStr 
  •      * @return 
  •      */ 
  •     public String download(String urlStr){ 
  •         StringBuffer sb = new StringBuffer(); 
  •         String line = null; 
  •         BufferedReader buffer = null; 
  •         try { 
  •             url = new URL(urlStr); 
  •             HttpURLConnection urlConn = (HttpURLConnection)url.openConnection(); 
  •             buffer = new BufferedReader(new InputStreamReader(urlConn.getInputStream())); 
  •             while( (line = buffer.readLine()) != null){ 
  •                 sb.append(line); 
  •             } 
  •              
  •         }  
  •         catch (Exception e) { 
  •             e.printStackTrace(); 
  •         } 
  •         finally{ 
  •             try { 
  •                 buffer.close(); 
  •             } catch (IOException e) { 
  •                 e.printStackTrace(); 
  •             } 
  •         } 
  •         return sb.toString(); 
  •     } 
  •  
  •     /** 
  •      *  
  •      * @param urlStr 
  •      * @param path 
  •      * @param fileName 
  •      * @return  
  •      *      -1:文件下载出错 
  •      *       0:文件下载成功 
  •      *       1:文件已经存在 
  •      */ 
  •     public int downFile(String urlStr, String path, String fileName){ 
  •         InputStream inputStream = null; 
  •         try { 
  •             FileUtils fileUtils = new FileUtils(); 
  •              
  •             if(fileUtils.isFileExist(path + fileName)){ 
  •                 return 1
  •             } else { 
  •                 inputStream = getInputStreamFromURL(urlStr); 
  •                 File resultFile = fileUtils.write2SDFromInput(path, fileName, inputStream); 
  •                 if(resultFile == null){ 
  •                     return -1
  •                 } 
  •             } 
  •         }  
  •         catch (Exception e) { 
  •             e.printStackTrace(); 
  •             return -1
  •         } 
  •         finally{ 
  •             try { 
  •                 inputStream.close(); 
  •             } catch (IOException e) { 
  •                 e.printStackTrace(); 
  •             } 
  •         } 
  •         return 0
  •     } 
  •      
  •     /** 
  •      * 根据URL得到输入流 
  •      * @param urlStr 
  •      * @return 
  •      */ 
  •     public InputStream getInputStreamFromURL(String urlStr) { 
  •         HttpURLConnection urlConn = null; 
  •         InputStream inputStream = null; 
  •         try { 
  •             url = new URL(urlStr); 
  •             urlConn = (HttpURLConnection)url.openConnection(); 
  •             inputStream = urlConn.getInputStream(); 
  •              
  •         } catch (MalformedURLException e) { 
  •             e.printStackTrace(); 
  •         } catch (IOException e) { 
  •             e.printStackTrace(); 
  •         } 
  •          
  •         return inputStream; 
  •     } 

 三、流操作

  • public class FileUtils { 
  •     private String SDPATH; 
  •      
  •     private int FILESIZE = 4 * 1024;  
  •      
  •     public String getSDPATH(){ 
  •         return SDPATH; 
  •     } 
  •      
  •     public FileUtils(){ 
  •         //得到当前外部存储设备的目录( /SDCARD ) 
  •         SDPATH = Environment.getExternalStorageDirectory() + "/"
  •     } 
  •      
  •     /** 
  •      * 在SD卡上创建文件 
  •      * @param fileName 
  •      * @return 
  •      * @throws IOException 
  •      */ 
  •     public File createSDFile(String fileName) throws IOException{ 
  •         File file = new File(SDPATH + fileName); 
  •         file.createNewFile(); 
  •         return file; 
  •     } 
  •      
  •     /** 
  •      * 在SD卡上创建目录 
  •      * @param dirName 
  •      * @return 
  •      */ 
  •     public File createSDDir(String dirName){ 
  •         File dir = new File(SDPATH + dirName); 
  •         dir.mkdir(); 
  •         return dir; 
  •     } 
  •      
  •     /** 
  •      * 判断SD卡上的文件夹是否存在 
  •      * @param fileName 
  •      * @return 
  •      */ 
  •     public boolean isFileExist(String fileName){ 
  •         File file = new File(SDPATH + fileName); 
  •         return file.exists(); 
  •     } 
  •      
  •     /** 
  •      * 将一个InputStream里面的数据写入到SD卡中 
  •      * @param path 
  •      * @param fileName 
  •      * @param input 
  •      * @return 
  •      */ 
  •     public File write2SDFromInput(String path,String fileName,InputStream input){ 
  •         File file = null; 
  •         OutputStream output = null; 
  •         try { 
  •             createSDDir(path); 
  •             file = createSDFile(path + fileName); 
  •             output = new FileOutputStream(file); 
  •             byte[] buffer = new byte[FILESIZE]; 
  •             while((input.read(buffer)) != -1){ 
  •                 output.write(buffer); 
  •             } 
  •             output.flush(); 
  •         }  
  •         catch (Exception e) { 
  •             e.printStackTrace(); 
  •         } 
  •         finally{ 
  •             try { 
  •                 output.close(); 
  •             } catch (IOException e) { 
  •                 e.printStackTrace(); 
  •             } 
  •         } 
  •         return file; 
  •     } 
  •  

 

posted on 2013-03-13 14:31  筱石头丶莜  阅读(136)  评论(0)    收藏  举报

导航

善知堂网址http://itszt.losoon.com