Android 手机sdcard目录或文件的拷贝、移动、删除(递归)
2016-07-08 09:48
417 查看
转自 http://blog.csdn.net/u011520181/article/details/39555745 href="http://blog.csdn.net/u011520181/article/details/39555745" target=_blank>点击打开链接
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();
}
}
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();
}
}
相关文章推荐
- Android Gradle详解
- AndroidStudio总结
- Android获取apk签名指纹的md5值(防止重新被打包)的实现方法
- Android中布局总结
- Android——ForceClose
- Android MVP初试
- Android逆向之旅--运行时修改内存中的Dalvik指令来改变代码逻辑
- 自定义Android Studio主题风格--基于sublime3修改而来的
- Android模块化编程——炫酷小巧多功能Button
- Context 都没弄明白,还怎么做 Android 开发?
- Android-RecyclerView-Item点击事件设置
- android 文档api
- Android dex分包方案
- Android平台程序崩溃的类型及原因列举
- android中像素单位dp、px、pt、sp的比较
- 用Android Studio的教大家做gif的方法
- Android中利用Handler实现图片轮播 ,示例+ 代码
- Android 初始化Menu item的值(ActionBar篇)
- Android 百度地图开发(二)--- 定位功能之MyLocationOverlay,PopupOverlay的使用
- 让Android 设备通过USB 转RJ45有线网卡上网