文件操作
?
package com.myclover.file.service;
?
import android.content.Context;
import android.os.Environment;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
?
public class FileHelper { ??
? ? private Context context; ??
? ? private String SDPATH; ??
? ? private String FILESPATH; ??
?
? ? public FileHelper(Context context) { ??
? ? ? ? this.context = context; ??
? ? ? ? SDPATH = Environment.getExternalStorageDirectory().getPath() + "\"; ??
? ? ? ? FILESPATH = this.context.getFilesDir().getPath() + "\"; ??
? ? } ??
?
? ? /** ?
? ? ?* 在SD卡上创建文件 ?
? ? ?* ??
? ? ?* @throws IOException ?
? ? ?*/ ?
? ? public File creatSDFile(String fileName) throws IOException { ??
? ? ? ? File file = new File(SDPATH + fileName); ??
? ? ? ? file.createNewFile(); ??
? ? ? ? return file; ??
? ? } ??
?
? ? /** ?
? ? ?* 删除SD卡上的文件 ?
? ? ?* ??
? ? ?* @param fileName ?
? ? ?*/ ?
? ? public boolean delSDFile(String fileName) { ??
? ? ? ? File file = new File(SDPATH + fileName); ??
? ? ? ? if (file == null || !file.exists() || file.isDirectory()) ??
? ? ? ? ? ? return false; ??
? ? ? ? file.delete(); ??
? ? ? ? return true; ??
? ? } ??
?
? ? /** ?
? ? ?* 在SD卡上创建目录 ?
? ? ?* ??
? ? ?* @param dirName ?
? ? ?*/ ?
? ? public File creatSDDir(String dirName) { ??
? ? ? ? File dir = new File(SDPATH + dirName); ??
? ? ? ? dir.mkdir(); ??
? ? ? ? return dir; ??
? ? } ??
?
? ? /** ?
? ? ?* 删除SD卡上的目录 ?
? ? ?* ??
? ? ?* @param dirName ?
? ? ?*/ ?
? ? public boolean delSDDir(String dirName) { ??
? ? ? ? File dir = new File(SDPATH + dirName); ??
? ? ? ? return delDir(dir); ??
? ? } ??
?
? ? /** ?
? ? ?* 修改SD卡上的文件或目录名 ?
? ? ?* ??
? ? ?* @param fileName ?
? ? ?*/ ?
? ? public boolean renameSDFile(String oldfileName, String newFileName) { ??
? ? ? ? File oleFile = new File(SDPATH + oldfileName); ??
? ? ? ? File newFile = new File(SDPATH + newFileName); ??
? ? ? ? return oleFile.renameTo(newFile); ??
? ? } ??
?
? ? /** ?
? ? ?* 拷贝SD卡上的单个文件 ?
? ? ?* ??
? ? ?* @param path ?
? ? ?* @throws IOException ?
? ? ?*/ ?
? ? public boolean copySDFileTo(String srcFileName, String destFileName) ??
? ? ? ? ? ? throws IOException { ??
? ? ? ? File srcFile = new File(SDPATH + srcFileName); ??
? ? ? ? File destFile = new File(SDPATH + destFileName); ??
? ? ? ? return copyFileTo(srcFile, destFile); ??
? ? } ??
?
? ? /** ?
? ? ?* 拷贝SD卡上指定目录的所有文件 ?
? ? ?* ??
? ? ?* @param srcDirName ?
? ? ?* @param destDirName ?
? ? ?* @return ?
? ? ?* @throws IOException ?
? ? ?*/ ?
? ? public boolean copySDFilesTo(String srcDirName, String destDirName) ??
? ? ? ? ? ? throws IOException { ??
? ? ? ? File srcDir = new File(SDPATH + srcDirName); ??
? ? ? ? File destDir = new File(SDPATH + destDirName); ??
? ? ? ? return copyFilesTo(srcDir, destDir); ??
? ? } ??
?
? ? /** ?
? ? ?* 移动SD卡上的单个文件 ?
? ? ?* ??
? ? ?* @param srcFileName ?
? ? ?* @param destFileName ?
? ? ?* @return ?
? ? ?* @throws IOException ?
? ? ?*/ ?
? ? public boolean moveSDFileTo(String srcFileName, String destFileName) ??
? ? ? ? ? ? throws IOException { ??
? ? ? ? File srcFile = new File(SDPATH + srcFileName); ??
? ? ? ? File destFile = new File(SDPATH + destFileName); ??
? ? ? ? return moveFileTo(srcFile, destFile); ??
? ? } ??
?
? ? /** ?
? ? ?* 移动SD卡上的指定目录的所有文件 ?
? ? ?* ??
? ? ?* @param srcDirName ?
? ? ?* @param destDirName ?
? ? ?* @return ?
? ? ?* @throws IOException ?
? ? ?*/ ?
? ? public boolean moveSDFilesTo(String srcDirName, String destDirName) ??
? ? ? ? ? ? throws IOException { ??
? ? ? ? File srcDir = new File( srcDirName); ??
? ? ? ? File destDir = new File( destDirName); ??
? ? ? ? return moveFilesTo(srcDir, destDir); ??
? ? } ??
?
?
? ? /**********************************************************************************************************/ ?
? ? /*********************************************************************************************************/ ?
?
? ? /** ?
? ? ?* 删除一个文件 ?
? ? ?* ??
? ? ?* @param file ?
? ? ?* @return ?
? ? ?*/ ?
? ? public boolean delFile(File file) { ??
? ? ? ? if (file.isDirectory()) ??
? ? ? ? ? ? return false; ??
? ? ? ? return file.delete(); ??
? ? } ??
?
? ? /** ?
? ? ?* 删除一个目录(可以是非空目录) ?
? ? ?* ??
? ? ?* @param dir ?
? ? ?*/ ?
? ? public boolean delDir(File dir) { ??
? ? ? ? if (dir == null || !dir.exists() || dir.isFile()) { ??
? ? ? ? ? ? return false; ??
? ? ? ? } ??
? ? ? ? for (File file : dir.listFiles()) { ??
? ? ? ? ? ? if (file.isFile()) { ??
? ? ? ? ? ? ? ? file.delete(); ??
? ? ? ? ? ? } else if (file.isDirectory()) { ??
? ? ? ? ? ? ? ? delDir(file);// 递归 ??
? ? ? ? ? ? } ??
? ? ? ? } ??
? ? ? ? dir.delete(); ??
? ? ? ? return true; ??
? ? } ??
?
? ? /** ?
? ? ?* 拷贝一个文件,srcFile源文件,destFile目标文件 ?
? ? ?* ??
? ? ?* @param path ?
? ? ?* @throws IOException ?
? ? ?*/ ?
? ? public boolean copyFileTo(File srcFile, File destFile) throws IOException { ??
? ? ? ? if (srcFile.isDirectory() || destFile.isDirectory()) ??
? ? ? ? ? ? return false;// 判断是否是文件 ??
? ? ? ? FileInputStream fis = new FileInputStream(srcFile); ??
? ? ? ? FileOutputStream fos = new FileOutputStream(destFile); ??
? ? ? ? int readLen = 0; ??
? ? ? ? byte[] buf = new byte[1024]; ??
? ? ? ? while ((readLen = fis.read(buf)) != -1) { ??
? ? ? ? ? ? fos.write(buf, 0, readLen); ??
? ? ? ? } ??
? ? ? ? fos.flush(); ??
? ? ? ? fos.close(); ??
? ? ? ? fis.close(); ??
? ? ? ? return true; ??
? ? } ??
?
? ? /** ?
? ? ?* 拷贝目录下的所有文件到指定目录 ?
? ? ?* ??
? ? ?* @param srcDir ?
? ? ?* @param destDir ?
? ? ?* @return ?
? ? ?* @throws IOException ?
? ? ?*/ ?
? ? public boolean copyFilesTo(File srcDir, File destDir) throws IOException { ??
? ? ? ? if (!srcDir.isDirectory() || !destDir.isDirectory()) ??
? ? ? ? ? ? return false;// 判断是否是目录 ??
? ? ? ? if (!destDir.exists()) ??
? ? ? ? ? ? return false;// 判断目标目录是否存在 ??
? ? ? ? File[] srcFiles = srcDir.listFiles(); ??
? ? ? ? for (int i = 0; i < srcFiles.length; i++) { ??
? ? ? ? ? ? if (srcFiles[i].isFile()) { ??
? ? ? ? ? ? ? ? // 获得目标文件 ??
? ? ? ? ? ? ? ? File destFile = new File(destDir.getPath() + "\" ?
? ? ? ? ? ? ? ? ? ? ? ? + srcFiles[i].getName()); ??
? ? ? ? ? ? ? ? copyFileTo(srcFiles[i], destFile); ??
? ? ? ? ? ? } else if (srcFiles[i].isDirectory()) { ??
? ? ? ? ? ? ? ? File theDestDir = new File(destDir.getPath() + "\" ?
? ? ? ? ? ? ? ? ? ? ? ? + srcFiles[i].getName()); ??
? ? ? ? ? ? ? ? copyFilesTo(srcFiles[i], theDestDir); ??
? ? ? ? ? ? } ??
? ? ? ? } ??
? ? ? ? return true; ??
? ? } ??
?
? ? public boolean myCopyFilesTo(File srcDir, File destDir) throws IOException {
? ? ? ? boolean isSuccess = true;
? ? ? ? if (!destDir.exists())
? ? ? ? ? ? isSuccess = destDir.mkdirs();
? ? ? ? if (!isSuccess)
? ? ? ? ? ? return false;// 判断目标目录是否存在
?
?
? ? ? ? if (!srcDir.isDirectory() || !destDir.isDirectory())
? ? ? ? ? ? return false;// 判断是否是目录
?
?
?
? ? ? ? File[] srcFiles = srcDir.listFiles();
? ? ? ? for (int i = 0; i < srcFiles.length; i++) {
? ? ? ? ? ? if (srcFiles[i].isFile()) {
? ? ? ? ? ? ? ? // 获得目标文件
? ? ? ? ? ? ? ? File destFile = new File(destDir.getPath() + "\" + srcFiles[i].getName());
? ? ? ? ? ? ? ? copyFileTo(srcFiles[i], destFile);
? ? ? ? ? ? } else if (srcFiles[i].isDirectory()) {
? ? ? ? ? ? ? ? File theDestDir = new File(destDir.getPath() + "\" + srcFiles[i].getName());
? ? ? ? ? ? ? ? if (!theDestDir.exists()) {
? ? ? ? ? ? ? ? ? ? theDestDir.mkdirs();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? myCopyFilesTo(srcFiles[i], theDestDir);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return true;
? ? } ??
?
? ? /** ?
? ? ?* 移动一个文件 ?
? ? ?* ??
? ? ?* @param srcFile ?
? ? ?* @param destFile ?
? ? ?* @return ?
? ? ?* @throws IOException ?
? ? ?*/ ?
? ? public boolean moveFileTo(File srcFile, File destFile) throws IOException { ??
? ? ? ? boolean iscopy = copyFileTo(srcFile, destFile); ??
? ? ? ? if (!iscopy) ??
? ? ? ? ? ? return false; ??
? ? ? ? delFile(srcFile); ??
? ? ? ? return true; ??
? ? } ??
?
? ? /** ?
? ? ?* 移动目录下的所有文件到指定目录 ?
? ? ?* ??
? ? ?* @param srcDir ?
? ? ?* @param destDir ?
? ? ?* @return ?
? ? ?* @throws IOException ?
? ? ?*/ ?
? ? public boolean moveFilesTo(File srcDir, File destDir) throws IOException { ??
? ? ? ? if (!srcDir.isDirectory() || !destDir.isDirectory()) { ??
? ? ? ? ? ? return false; ??
? ? ? ? } ??
? ? ? ? File[] srcDirFiles = srcDir.listFiles(); ??
? ? ? ? for (int i = 0; i < srcDirFiles.length; i++) { ??
? ? ? ? ? ? if (srcDirFiles[i].isFile()) { ??
? ? ? ? ? ? ? ? File oneDestFile = new File(destDir.getPath() + "\" ?
? ? ? ? ? ? ? ? ? ? ? ? + srcDirFiles[i].getName()); ??
? ? ? ? ? ? ? ? moveFileTo(srcDirFiles[i], oneDestFile); ??
? ? ? ? ? ? ? ? delFile(srcDirFiles[i]); ??
? ? ? ? ? ? } else if (srcDirFiles[i].isDirectory()) { ??
? ? ? ? ? ? ? ? File oneDestFile = new File(destDir.getPath() + "\" ?
? ? ? ? ? ? ? ? ? ? ? ? + srcDirFiles[i].getName()); ??
? ? ? ? ? ? ? ? moveFilesTo(srcDirFiles[i], oneDestFile); ??
? ? ? ? ? ? ? ? delDir(srcDirFiles[i]); ??
? ? ? ? ? ? } ??
?
? ? ? ? } ??
? ? ? ? return true; ??
? ? } ??
} ?