package com.example.qingyangdemo.common; import java.io.File; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import com.example.qingyangdemo.R; import android.content.Context; import android.content.Intent; import android.os.Environment; import android.widget.ImageView; /** * 文件处理的工具类 * * @author 赵庆洋 * */ public class FileUtil { /** * 计算目录大小 * * @param dir * @return */ public static long getDirSize(File dir) { if (dir == null) { return 0; } // 不是目录 if (!dir.isDirectory()) { return 0; } long dirSize = 0; File[] files = dir.listFiles(); for (File file : files) { if (file.isFile()) { dirSize += file.length(); } else if (file.isDirectory()) { dirSize += file.length(); // 递归调用 dirSize += getDirSize(file); } } return dirSize; } /** * 转换文件大小 * * @param fileS * @return B/KB/MB/GB */ public static String formatFileSize(long fileS) { if (fileS == 0) { return "0.00B"; } DecimalFormat dFormat = new DecimalFormat("#.00"); String fileSizeString = ""; if (fileS < 1024) { fileSizeString = dFormat.format((double) fileS) + "B"; } else if (fileS < 1048576) { fileSizeString = dFormat.format((double) fileS / 1024) + "KB"; } else if (fileS < 1073741824) { fileSizeString = dFormat.format((double) fileS / 1048576) + "MB"; } else { fileSizeString = dFormat.format((double) fileS / 1073741824) + "GB"; } return fileSizeString; } /** * 文件目录地址 * * @return */ public static String fileDirectory(String dirPath, String fileName) { String filePath = ""; String storageState = Environment.getExternalStorageState(); if (storageState.equals(Environment.MEDIA_MOUNTED)) { filePath = Environment.getExternalStorageDirectory() .getAbsolutePath() + dirPath; File file = new File(filePath); if (!file.exists()) { // 建立一个新的目录 file.mkdirs(); } filePath = filePath + fileName; } return filePath; } /** * 获取文件目录 * * @return */ public static File getDirectoryFile(String dirPath) { String storageState = Environment.getExternalStorageState(); File file = null; if (storageState.equals(Environment.MEDIA_MOUNTED)) { String filePath = Environment.getExternalStorageDirectory() .getAbsolutePath() + dirPath; file = new File(filePath); if (!file.exists()) { // 建立一个新的目录 file.mkdirs(); } } return file; } /** * 检查文件后缀 * * @param checkItsEnd * @param fileEndings * @return */ private static boolean checkEndsWithInStringArray(String checkItsEnd, String[] fileEndings) { for (String aEnd : fileEndings) { if (checkItsEnd.endsWith(aEnd)) return true; } return false; } /** * 根据不同的后缀打开不同的文件 * * @param fileName */ public static void openFile(Context context, String fileName, File file) { Intent intent; if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingImage))) { intent = OpenFiles.getImageFileIntent(file); context.startActivity(intent); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingWebText))) { intent = OpenFiles.getHtmlFileIntent(file); context.startActivity(intent); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingPackage))) { intent = OpenFiles.getApkFileIntent(file); context.startActivity(intent); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingAudio))) { intent = OpenFiles.getAudioFileIntent(file); context.startActivity(intent); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingVideo))) { intent = OpenFiles.getVideoFileIntent(file); context.startActivity(intent); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingText))) { intent = OpenFiles.getTextFileIntent(file); context.startActivity(intent); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingPdf))) { intent = OpenFiles.getPdfFileIntent(file); context.startActivity(intent); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingWord))) { intent = OpenFiles.getWordFileIntent(file); context.startActivity(intent); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingExcel))) { intent = OpenFiles.getExcelFileIntent(file); context.startActivity(intent); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingPPT))) { intent = OpenFiles.getPPTFileIntent(file); context.startActivity(intent); } else { UIHelper.ToastMessage(context, R.string.open_file_error); } } /** * 根据不同的后缀imageView设置不同的值 * * @param fileName */ public static void setImage(Context context, String fileName, ImageView imageView) { if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingImage))) { imageView.setImageResource(R.drawable.file_icon_picture); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingWebText))) { imageView.setImageResource(R.drawable.file_icon_txt); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingPackage))) { imageView.setImageResource(R.drawable.file_icon_rar); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingAudio))) { imageView.setImageResource(R.drawable.file_icon_mp3); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingVideo))) { imageView.setImageResource(R.drawable.file_icon_video); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingText))) { imageView.setImageResource(R.drawable.file_icon_txt); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingPdf))) { imageView.setImageResource(R.drawable.file_icon_pdf); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingWord))) { imageView.setImageResource(R.drawable.file_icon_office); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingExcel))) { imageView.setImageResource(R.drawable.file_icon_office); } else if (checkEndsWithInStringArray(fileName, context.getResources() .getStringArray(R.array.fileEndingPPT))) { imageView.setImageResource(R.drawable.file_icon_office); } else { imageView.setImageResource(R.drawable.file); } } /** * * 返回本地文件列表 * * @param 本地文件夹路径 * */ public static List<File> getFileListByPath(String path) { File dir = new File(path); List<File> folderList = new ArrayList<File>(); List<File> fileList = new ArrayList<File>(); // 获取指定盘符下的所有文件列表。(listFiles可以获得指定路径下的所有文件,以数组方式返回) File[] files = dir.listFiles(); // 如果该目录下面为空,则该目录的此方法执行 if (files == null) { return folderList; }// 通过循环将所遍历所有文件 for (int i = 0; i < files.length; i++) { if (!files[i].isHidden()) { if (files[i].isDirectory()) { folderList.add(files[i]); } if (files[i].isFile()) { fileList.add(files[i]); } } } folderList.addAll(fileList); return folderList; } }