转自 http://blog.youkuaiyun.com/u011520181/article/details/39555745点击打开链接
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- /**
- *
- * @ClassName: FileOperator
- * @Description: 文件操作类,删除文件或文件目录
- * @author: SAU_LC66
- * @date: 2014-09-25 19:01
- */
- public class FileOperator {
- /**
- * 复制文件目录
- * @param srcDir 要复制的源目录 eg:/mnt/sdcard/DB
- * @param destDir 复制到的目标目录 eg:/mnt/sdcard/db/
- * @return
- */
- public static boolean copyDir(String srcDir, String destDir){
- File sourceDir = new File(srcDir);
- //判断文件目录是否存在
- if(!sourceDir.exists()){
- return false;
- }
- //判断是否是目录
- if (sourceDir.isDirectory()) {
- File[] fileList = sourceDir.listFiles();
- File targetDir = new File(destDir);
- //创建目标目录
- if(!targetDir.exists()){
- targetDir.mkdirs();
- }
- //遍历要复制该目录下的全部文件
- for(int i= 0;i<fileList.length;i++){
- if(fileList[i].isDirectory()){//如果如果是子目录进行递归
- copyDir(fileList[i].getPath()+ "/",
- destDir + fileList[i].getName() + "/");
- }else{//如果是文件则进行文件拷贝
- copyFile(fileList[i].getPath(), destDir +fileList[i].getName());
- }
- }
- return true;
- }else {
- copyFileToDir(srcDir,destDir);
- return true;
- }
- }
- /**
- * 复制文件(非目录)
- * @param srcFile 要复制的源文件
- * @param destFile 复制到的目标文件
- * @return
- */
- private static boolean copyFile(String srcFile, String destFile){
- try{
- InputStream streamFrom = new FileInputStream(srcFile);
- OutputStream streamTo = new FileOutputStream(destFile);
- byte buffer[]=new byte[1024];
- int len;
- while ((len= streamFrom.read(buffer)) > 0){
- streamTo.write(buffer, 0, len);
- }
- streamFrom.close();
- streamTo.close();
- return true;
- } catch(Exception ex){
- return false;
- }
- }
- /**
- * 把文件拷贝到某一目录下
- * @param srcFile
- * @param destDir
- * @return
- */
- public static boolean copyFileToDir(String srcFile, String destDir){
- File fileDir = new File(destDir);
- if (!fileDir.exists()) {
- fileDir.mkdir();
- }
- String destFile = destDir +"/" + new File(srcFile).getName();
- try{
- InputStream streamFrom = new FileInputStream(srcFile);
- OutputStream streamTo = new FileOutputStream(destFile);
- byte buffer[]=new byte[1024];
- int len;
- while ((len= streamFrom.read(buffer)) > 0){
- streamTo.write(buffer, 0, len);
- }
- streamFrom.close();
- streamTo.close();
- return true;
- } catch(Exception ex){
- return false;
- }
- }
- /**
- * 移动文件目录到某一路径下
- * @param srcFile
- * @param destDir
- * @return
- */
- public static boolean moveFile(String srcFile, String destDir) {
- //复制后删除原目录
- if (copyDir(srcFile, destDir)) {
- deleteFile(new File(srcFile));
- return true;
- }
- return false;
- }
- /**
- * 删除文件(包括目录)
- * @param delFile
- */
- public static void deleteFile(File delFile) {
- //如果是目录递归删除
- if (delFile.isDirectory()) {
- File[] files = delFile.listFiles();
- for (File file : files) {
- deleteFile(file);
- }
- }else{
- delFile.delete();
- }
- //如果不执行下面这句,目录下所有文件都删除了,但是还剩下子目录空文件夹
- delFile.delete();
- }
- }