package com.eighteengray.commonutillibrary;
import android.content.Context;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
* @ClassName: FileOperateUtil
* @Description: 文件操作工具类
* @author LinJ
* @date 2014-12-31 上午9:44:38
*
*/
public class FileOperateUtil
{
public final static String TAG = "FileOperateUtil";
public final static int ROOT = 0;// 根目录
public final static int TYPE_IMAGE = 1;// 图片
public final static int TYPE_THUMBNAIL = 2;// 缩略图
public final static int TYPE_VIDEO = 3;// 视频
/**
* 获取文件夹路径
*
* @param type
* 文件夹类别
* @param rootPath
* 根目录文件夹名字 为业务流水号
* @return
*/
public static String getFolderPath(Context context, int type,
String rootPath)
{
// 本业务文件主目录
StringBuilder pathBuilder = new StringBuilder();
// 添加应用存储路径
pathBuilder.append(context.getExternalFilesDir(null).getAbsolutePath());
pathBuilder.append(File.separator);
// 添加文件总目录
pathBuilder.append("File");
pathBuilder.append(File.separator);
// 添加当然文件类别的路径
pathBuilder.append(rootPath);
pathBuilder.append(File.separator);
switch (type)
{
case TYPE_IMAGE:
pathBuilder.append("Image");
break;
case TYPE_VIDEO:
pathBuilder.append("Video");
break;
case TYPE_THUMBNAIL:
pathBuilder.append("Thumbnail");
break;
default:
break;
}
return pathBuilder.toString();
}
/**
* 获取目标文件夹内指定后缀名的文件数组,按照修改日期排序
*
* @param file
* 目标文件夹路径
* 指定后缀名
* @param content
* 包含的内容,用以查找视频缩略图
* @return
*/
public static List<File> listFiles(String file, final String format,
String content)
{
return listFiles(new File(file), format, content);
}
public static List<File> listFiles(String file, final String format)
{
return listFiles(new File(file), format, null);
}
/**
* 获取目标文件夹内指定后缀名的文件数组,按照修改日期排序
*
* @param file
* 目标文件夹
* @param extension
* 指定后缀名
* @param content
* 包含的内容,用以查找视频缩略图
* @return
*/
public static List<File> listFiles(File file, final String extension,
final String content)
{
File[] files = null;
if (file == null || !file.exists() || !file.isDirectory())
return null;
files = file.listFiles(new FilenameFilter()
{
@Override
public boolean accept(File arg0, String arg1)
{
// TODO Auto-generated method stub
if (content == null || content.equals(""))
return arg1.endsWith(extension);
else
{
return arg1.contains(content) && arg1.endsWith(extension);
}
}
});
if (files != null)
{
List<File> list = new ArrayList<File>(Arrays.asList(files));
sortList(list, false);
return list;
}
return null;
}
/**
* 根据修改时间为文件列表排序
*
* @param list
* 排序的文件列表
* @param asc
* 是否升序排序 true为升序 false为降序
*/
public static void sortList(List<File> list, final boolean asc)
{
// 按修改日期排序
Collections.sort(list, new Comparator<File>()
{
public int compare(File file, File newFile)
{
if (file.lastModified() > newFile.lastModified())
{
if (asc)
{
return 1;
} else
{
return -1;
}
} else if (file.lastModified() == newFile.lastModified())
{
return 0;
} else
{
if (asc)
{
return -1;
} else
{
return 1;
}
}
}
});
}
/**
*
* @param extension
* 后缀名 如".jpg"
* @return
*/
public static String createFileNmae(String extension)
{
// DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss",
// Locale.getDefault());
// // 转换为字符串
// String formatDate = format.format(new Date());
// 查看是否带"."
if (!extension.startsWith("."))
extension = "." + extension;
return "TempVideo" + extension;
}
/**
* 删除缩略图 同时删除源图或源视频
*
* @param thumbPath
* 缩略图路径
* @return
*/
public static boolean deleteThumbFile(String thumbPath, Context context)
{
boolean flag = false;
File file = new File(thumbPath);
if (!file.exists())
{ // 文件不存在直接返回
return flag;
}
flag = file.delete();
// 源文件路径
String sourcePath = thumbPath.replace(
"Thumbnail", "Image");
file = new File(sourcePath);
if (!file.exists())
{ // 文件不存在直接返回
return flag;
}
flag = file.delete();
return flag;
}
/**
* 删除源图或源视频 同时删除缩略图
*
* @param sourcePath
* 缩略图路径
* @return
*/
public static boolean deleteSourceFile(String sourcePath, Context context)
{
boolean flag = false;
File file = new File(sourcePath);
if (!file.exists())
{ // 文件不存在直接返回
return flag;
}
flag = file.delete();
// 缩略图文件路径
String thumbPath = sourcePath.replace(
"Image", "Thumbnail");
file = new File(thumbPath);
if (!file.exists())
{ // 文件不存在直接返回
return flag;
}
flag = file.delete();
return flag;
}
}