读书人

资料操作

发布时间: 2012-06-28 15:20:04 作者: rapoo

文件操作

?

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; ??

? ? } ??

} ?





实例:将一个文件夹下的所有文件包括文件夹全部拷贝到令一个目录下,如果,目标目录存在要复制的文件夹则不需要重新建立,没有则建立目录:
public class FileHelper {? ? private Context context; ??? ? public FileHelper(Context context) { ??? ? ? ? this.context = context; ??? ? } ???? ? // 复制一个目录到另一个目录,做合并处理? ? public boolean copyDirFilesTo(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();? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? copyDirFilesTo(srcFiles[i], theDestDir);? ? ? ? ? ? }? ? ? ? }? ? ? ? return true;? ? }
? ? // 拷贝一个文件,srcFile源文件,destFile目标文件? ? 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;? ? }
? ? // 删除一个目录(可以是非空目录)? ? 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;? ? }
}主文件调用:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fileHelper = new FileHelper(? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? YyBackUpSetting.this);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? String path = Environment? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .getExternalStorageDirectory()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .toString()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? + "/yybackup/";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? File srcFile = new File(path);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? String paString = Environment? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .getExternalStorageDirectorySd()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .toString()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? + "/yybackup/";? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? File destFile = new File(paString);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? fileHelper.copyDirFilesTo(srcFile,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? destFile);


读书人网 >移动开发

热点推荐