【Android】拷貝文件到另一個目錄下


    /**  
         * 復制單個文件  
         * @param oldPath String 原文件路徑 如:c:/fqf.txt  
         * @param newPath String 復制后路徑 如:f:/fqf.txt  
         * @return boolean  
         */   
       public void copyFile(String oldPath, String newPath) {   
           try {   
               int bytesum = 0;   
               int byteread = 0;   
               File oldfile = new File(oldPath);   
               if (oldfile.exists()) { //文件存在時   
                   InputStream inStream = new FileInputStream(oldPath); //讀入原文件   
                   FileOutputStream fs = new FileOutputStream(newPath);   
                   byte[] buffer = new byte[1444];   
                   int length;   
                   while ( (byteread = inStream.read(buffer)) != -1) {   
                       bytesum += byteread; //字節數 文件大小   
                       System.out.println(bytesum);   
                       fs.write(buffer, 0, byteread);   
                   }   
                   inStream.close();   
               }   
           }   
           catch (Exception e) {   
               System.out.println("復制單個文件操作出錯");   
               e.printStackTrace();   
      
           }   
      
       }   
      
       /**  
         * 復制整個文件夾內容  
         * @param oldPath String 原文件路徑 如:c:/fqf  
         * @param newPath String 復制后路徑 如:f:/fqf/ff  
         * @return boolean  
         */   
       public void copyFolder(String oldPath, String newPath) {   
      
           try {   
               (new File(newPath)).mkdirs(); //如果文件夾不存在 則建立新文件夾   
               File a=new File(oldPath);   
               String[] file=a.list();   
               File temp=null;   
               for (int i = 0; i < file.length; i++) {   
                   if(oldPath.endsWith(File.separator)){   
                       temp=new File(oldPath+file[i]);   
                   }   
                   else{   
                       temp=new File(oldPath+File.separator+file[i]);   
                   }   
      
                   if(temp.isFile()){   
                       FileInputStream input = new FileInputStream(temp);   
                       FileOutputStream output = new FileOutputStream(newPath + "/" +   
                               (temp.getName()).toString());   
                       byte[] b = new byte[1024 * 5];   
                       int len;   
                       while ( (len = input.read(b)) != -1) {   
                           output.write(b, 0, len);   
                       }   
                       output.flush();   
                       output.close();   
                       input.close();   
                   }   
                   if(temp.isDirectory()){//如果是子文件夾   
                       copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);   
                   }   
               }   
           }   
           catch (Exception e) {   
               System.out.println("復制整個文件夾內容操作出錯");   
               e.printStackTrace();   
      
           }   
      
       }  

PS:

拷貝assets目錄下文件

 
InputStream is = ctx.getAssets().open("test.apk");  

盡可能不使用try/catch,拷貝文件時檢查文件屬性等參數,確保萬無一失

if (!oldfile.exists()) {return ;}  
if (!oldfile.isFile()) {return ;}  
if (!oldfile.canRead()) {return ;} 

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM