在开发中,对于文件和文件夹的复制 删除操作,也是常用的,下面做个记录以便备用
/** * 复制文件 * * @param fromFile 要复制的文件目录 * @param toFile 要粘贴的文件目录 * @return 是否复制成功 */ public boolean copy(String fromFile, String toFile) { //要复制的文件目录 File[] currentFiles; File root = new File(fromFile); if (!root.exists()) { return false; } //如果存在则获取当前目录下的全部文件 填充数组 currentFiles = root.listFiles(); //目标目录 File targetDir = new File(toFile); //创建目录 if (!targetDir.exists()) { targetDir.mkdirs(); } //遍历要复制该目录下的全部文件 for (int i = 0; i < currentFiles.length; i++) { if (currentFiles[i].isDirectory()){//如果当前项为子目录 进行递归{ copy(currentFiles[i].getPath(), toFile +"/"+ currentFiles[i].getName()); } else{//如果当前项为文件则进行文件拷贝 copySdcardFile(currentFiles[i].getPath(), toFile +"/"+ currentFiles[i].getName()); } } return true; } //要复制的目录下的所有非子目录(文件夹)文件拷贝 public int copySdcardFile(String fromFile, String toFile) { try { InputStream fosfrom = new FileInputStream(fromFile); OutputStream fosto = new FileOutputStream(toFile); byte bt[] = new byte[1024]; int c; while ((c = fosfrom.read(bt)) > 0) { fosto.write(bt, 0, c); } fosfrom.close(); fosto.close(); return 0; } catch (Exception ex) { return -1; } } /* *删除文件夹 */ public boolean deleteDirectory(String dir) { // 如果dir不以文件分隔符结尾,自动添加文件分隔符 if (!dir.endsWith(File.separator)) dir = dir + File.separator; File dirFile = new File(dir); // 如果dir对应的文件不存在,或者不是一个目录,则退出 if ((!dirFile.exists()) || (!dirFile.isDirectory())) { Log.e("FileUtils","删除目录失败:" + dir + "不存在!"); return false; } boolean flag = true; // 删除文件夹中的所有文件包括子目录 File[] files = dirFile.listFiles(); for (int i = 0; i < files.length; i++) { // 删除子文件 if (files[i].isFile()) { flag = files[i].delete(); if (!flag) break; } // 删除子目录 else if (files[i].isDirectory()) { flag = deleteDirectory(files[i] .getAbsolutePath()); if (!flag) break; } } if (!flag) { Log.e("FileUtils","删除目录失败!"); return false; } // 删除当前目录 if (dirFile.delete()) { Log.e("FileUtils","删除目录" + dir + "成功!"); return true; } else { return false; } }