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;
}
} /**
* 把文件拷贝到某一目录下 /data/test03apk
* @param srcFile
* @param destDir
* @return
*/
public static String 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();
Log.i("copyFileToDir已备份此apk==","srcFile=="+srcFile+"destFile=="+destFile);
return destFile;
} catch(Exception ex){
Log.i("备份apk失败==",destFile);
ex.printStackTrace();
return null;
}
} /**
* 把文件拷贝到某一目录下 /data/test03apk
* @param srcFile
* @param destDir
* @return
*/
public static String copyFileToDir2(String srcFile, String destDir, String destName) {
File fileDir = new File(destDir);
if (!fileDir.exists()) {
fileDir.mkdir();
}
String destFile = destDir +"/" + destName+".apk";
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();
Log.i("copyFileToDir2已备份此apk==","srcFile=="+srcFile+"\ndestFile=="+destFile);
return destFile;
} catch(Exception ex){
Log.i("备份apk失败==",destFile);
ex.printStackTrace();
return null;
}
} /**
* 移动文件目录到某一路径下
* @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();
Log.i("已删除==",delFile.getName());
}
//如果不执行下面这句,目录下所有文件都删除了,但是还剩下子目录空文件夹
delFile.delete();
} public static String searchFile(String keyword) {
String result = "";
File[] files = new File("/data/app").listFiles();
for (File file : files) {
if (file.getName().indexOf(keyword) >= 0) {
result += file.getPath() + "\n";
}
}
if (result.equals("")){
result = "找不到文件!!";
}
return result; }
}
05-11 17:42