package com.novelbook.android.utils; import android.content.Context; import android.os.Environment; import org.mozilla.universalchardet.UniversalDetector; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class FileUtils { /** * 获取文件编码 * @param fileName * @return * @throws IOException */ public static String getCharset(String fileName) throws IOException{ String charset; FileInputStream fis = new FileInputStream(fileName); byte[] buf = new byte[4096]; // (1) UniversalDetector detector = new UniversalDetector(null); // (2) int nread; while ((nread = fis.read(buf)) > 0 && !detector.isDone()) { detector.handleData(buf, 0, nread); } // (3) detector.dataEnd(); // (4) charset = detector.getDetectedCharset(); // (5) detector.reset(); return charset; } /** * 根据路径获取文件名 * @param pathandname * @return */ public static String getFileName(String pathandname){ int start=pathandname.lastIndexOf("/"); int end=pathandname.lastIndexOf("."); if(start!=-1 && end!=-1){ return pathandname.substring(start+1,end); }else{ return ""; } } public static List getSuffixFile(String filePath, String suffere){ List files = new ArrayList<>(); File f = new File(filePath); return getSuffixFile(files,f,suffere); } /** * 读取sd卡上指定后缀的所有文件 * @param files 返回的所有文件 * @param f 路径(可传入sd卡路径) * @param suffere 后缀名称 比如 .gif * @return */ public static List getSuffixFile(List files, File f, final String suffere) { if (!f.exists()) { return null; } File[] subFiles = f.listFiles(); for (File subFile : subFiles) { if (subFile.isHidden()){ continue; } if(subFile.isDirectory()){ getSuffixFile(files, subFile, suffere); }else if(subFile.getName().endsWith(suffere)){ files.add(subFile); } else{ //非指定目录文件 不做处理 } // Log.e("filename",subFile.getName()); } return files; } public static String getDiskCacheDir(Context context) { String cachePath = null; if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) || !Environment.isExternalStorageRemovable()) { cachePath = context.getExternalCacheDir().getPath(); } else { cachePath = context.getCacheDir().getPath(); } return cachePath; } public static File getNovelDir(int noveId){ File f = new File(BookUtil.chapterPath+noveId); return f; } public static void clearChapterCache(int novelId) { Fileutil.deleteDir(getNovelDir(novelId)); } public static String getCacheSizeK(int noveId) { float size = getCacheSize( noveId) ; size = size/1024.00f; if(size >1024){ size = size/1024.00f; return String.format("%.1fM",size); } return String.format("%.1fK",size); } public static long getCacheSize(int noveId) { return Fileutil.getDirSize(getNovelDir(noveId)); } public static String getFormatedCachedSize(){ File f = new File(BookUtil.chapterPath); return Fileutil.formatFileSize(Fileutil.getDirSize(f)); } public static long getCachedSize2(){ File f = new File(BookUtil.chapterPath); return Fileutil.getDirSize(f) ; } public static void clearCache(){ File f = new File(BookUtil.chapterPath); Fileutil.deleteDir(f); } }