android 拷贝文件到其他目录下
生活随笔
收集整理的這篇文章主要介紹了
android 拷贝文件到其他目录下
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
今天,講講如何拷貝文件到指定目錄下。
一,簡單的使用輸入流進(jìn)行拷貝。
/** * 復(fù)制單個文件 * @param oldPath String 原文件路徑 如:c:/fqf.txt * @param newPath String 復(fù)制后路徑 如: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; //字節(jié)數(shù) 文件大小 System.out.println(bytesum); fs.write(buffer, 0, byteread); } inStream.close(); } } catch (Exception e) { System.out.println("復(fù)制單個文件操作出錯"); e.printStackTrace(); } } /** * 復(fù)制整個文件夾內(nèi)容 * @param oldPath String 原文件路徑 如:c:/fqf * @param newPath String 復(fù)制后路徑 如: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("復(fù)制整個文件夾內(nèi)容操作出錯"); e.printStackTrace(); } }
二,使用緩沖流進(jìn)行拷貝
import java.io.*; /*** 復(fù)制文件夾或文件夾*/ public class CopyDirectory {// 源文件夾 static String url1 = "f:/photos";// 目標(biāo)文件夾 static String url2 = "d:/tempPhotos";public static void main(String args[]) throws IOException {// 創(chuàng)建目標(biāo)文件夾 (new File(url2)).mkdirs();// 獲取源文件夾當(dāng)前下的文件或目錄 File[] file = (new File(url1)).listFiles();for (int i = 0; i < file.length; i++) {if (file[i].isFile()) {// 復(fù)制文件 copyFile(file[i],new File(url2+file[i].getName()));}if (file[i].isDirectory()) {// 復(fù)制目錄 String sourceDir=url1+File.separator+file[i].getName();String targetDir=url2+File.separator+file[i].getName();copyDirectiory(sourceDir, targetDir);}}} // 復(fù)制文件 public static void copyFile(File sourceFile,File targetFile) throws IOException{// 新建文件輸入流并對它進(jìn)行緩沖 FileInputStream input = new FileInputStream(sourceFile);BufferedInputStream inBuff=new BufferedInputStream(input);// 新建文件輸出流并對它進(jìn)行緩沖 FileOutputStream output = new FileOutputStream(targetFile);BufferedOutputStream outBuff=new BufferedOutputStream(output);// 緩沖數(shù)組 byte[] b = new byte[1024 * 5];int len;while ((len =inBuff.read(b)) != -1) {outBuff.write(b, 0, len);}// 刷新此緩沖的輸出流 outBuff.flush();//關(guān)閉流 inBuff.close();outBuff.close();output.close();input.close();}// 復(fù)制文件夾 public static void copyDirectiory(String sourceDir, String targetDir)throws IOException {// 新建目標(biāo)目錄 (new File(targetDir)).mkdirs();// 獲取源文件夾當(dāng)前下的文件或目錄 File[] file = (new File(sourceDir)).listFiles();for (int i = 0; i < file.length; i++) {if (file[i].isFile()) {// 源文件 File sourceFile=file[i];// 目標(biāo)文件 File targetFile=new File(new File(targetDir).getAbsolutePath() +File.separator+file[i].getName());copyFile(sourceFile,targetFile);}if (file[i].isDirectory()) {// 準(zhǔn)備復(fù)制的源文件夾 String dir1=sourceDir + "/" + file[i].getName();// 準(zhǔn)備復(fù)制的目標(biāo)文件夾 String dir2=targetDir + "/"+ file[i].getName();copyDirectiory(dir1, dir2);}}} }
第二種的代碼比第一種的代碼進(jìn)行拷貝的效率快很多,所以建議使用第二種。
android 拷貝文件到其他目錄下就講完了。
就這么簡單。
總結(jié)
以上是生活随笔為你收集整理的android 拷贝文件到其他目录下的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android String的repla
- 下一篇: android 分享图片和视频