package com.llf.basemodel.utils; import android.content.Context; import android.database.Cursor; import android.net.Uri; import android.os.Environment; import android.provider.MediaStore; import android.provider.OpenableColumns; import android.text.format.Formatter; import java.io.File; /** * Created by ,llf on 2017/3/6. * 文件处理 */ public class FileUtil { private static final int DEFAULT_BUFFER_SIZE = 1024 * 4; private FileUtil() { } /** * 递归创建文件夹 * * @param dirPath * @return 创建失败返回"" */ public static String createDir(String dirPath) { try { File file = new File(dirPath); if (file.getParentFile().exists()) { file.mkdir(); return file.getAbsolutePath(); } else { createDir(file.getParentFile().getAbsolutePath()); file.mkdir(); } } catch (Exception e) { e.printStackTrace(); } return dirPath; } /** * 创建文件 * @param file * @return 创建失败返回"" */ public static String createFile(File file) { try { if (file.getParentFile().exists()) { file.createNewFile(); return file.getAbsolutePath(); } else { createDir(file.getParentFile().getAbsolutePath()); file.createNewFile(); } } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 返回根缓存目录 * * @return */ public static String createRootPath(Context context) { String cacheRootPath = ""; if (isSdCardAvailable()) { cacheRootPath = context.getExternalCacheDir().getPath(); } else { cacheRootPath = context.getCacheDir().getPath(); } return cacheRootPath; } /** * 获取文件名 * @param fileName * @return */ public static String[] splitFileName(String fileName) { String name = fileName; String extension = ""; int i = fileName.lastIndexOf("."); if (i != -1) { name = fileName.substring(0, i); extension = fileName.substring(i); } return new String[]{name, extension}; } /** * 根据uri获取文件路径 * @param context * @param uri * @return */ public static String getFileName(Context context, Uri uri) { String result = null; if (uri.getScheme().equals("content")) { Cursor cursor = context.getContentResolver().query(uri, null, null, null, null); try { if (cursor != null && cursor.moveToFirst()) { result = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)); } } catch (Exception e) { e.printStackTrace(); } finally { if (cursor != null) { cursor.close(); } } } if (result == null) { result = uri.getPath(); int cut = result.lastIndexOf(File.separator); if (cut != -1) { result = result.substring(cut + 1); } } return result; } /** * 根据uri获取真文件路径 * @param context * @param contentUri * @return */ public static String getRealPathFromURI(Context context, Uri contentUri) { Cursor cursor = context.getContentResolver().query(contentUri, null, null, null, null); if (cursor == null) { return contentUri.getPath(); } else { cursor.moveToFirst(); int index = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); String realPath = cursor.getString(index); cursor.close(); return realPath; } } /** * 重命名 * @param file * @param newName * @return */ public static File rename(File file, String newName) { File newFile = new File(file.getParent(), newName); if (!newFile.equals(file)) { if (newFile.exists()) { if (newFile.delete()) { } } if (file.renameTo(newFile)) { } } return newFile; } /** * 文件是否存在 * @param path * @return */ public static boolean fileIsExists(String path) { try { File f = new File(path); if (!f.exists()) { return false; } } catch (Exception e) { return false; } return true; } /** * SD是否可用 * @return */ public static boolean isSdCardAvailable() { return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()); } /** * 将字节数据转化为B,KB,MB */ public static void formatSize(Context context,long number){ Formatter.formatFileSize(context,number); } }