package com.codingbingo.fastreader.utils;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;
import com.codingbingo.fastreader.model.LocalFile;
import com.codingbingo.fastreader.utils.encode.BytesEncodingDetect;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
/**
* Author: bingo
* Email: codingbingo@gmail.com
* By 2017/1/5.
*/
public class FileUtils {
/**
* 得到文件的编码
*
* @param filePath 文件路径
* @return 文件的编码
*/
public static String getJavaEncode(String filePath) {
BytesEncodingDetect bytesEncodingDetect = new BytesEncodingDetect();
String fileCode = BytesEncodingDetect.javaname[
bytesEncodingDetect.detectEncoding(new File(filePath))
];
return fileCode;
}
/**
* 从媒体库中获取指定后缀的文件列表
*
* @param context
* @param searchFileSuffix 文件后缀列表,eg: new String[]{"epub","mobi","pdf","txt"};
* @return
*/
public static List<LocalFile> getSupportFileList(Context context, String[] searchFileSuffix) {
ArrayList<LocalFile> searchFileList = null;
if (null == context || null == searchFileSuffix
|| searchFileSuffix.length == 0) {
return null;
}
String searchPath = "";
int length = searchFileSuffix.length;
for (int index = 0; index < length; index++) {
searchPath += (MediaStore.Files.FileColumns.DATA + " LIKE '%" + searchFileSuffix[index] + "' ");
if ((index + 1) < length) {
searchPath += "or ";
}
}
searchFileList = new ArrayList<>();
Uri uri = MediaStore.Files.getContentUri("external");
Cursor cursor = context.getContentResolver().query(
uri, new String[]{MediaStore.Files.FileColumns.DATA, MediaStore.Files.FileColumns.SIZE}, searchPath, null, null);
if (cursor == null) {
System.out.println("Cursor 获取失败!");
} else {
if (cursor.moveToFirst()) {
do {
String filepath = cursor.getString(cursor.getColumnIndex(MediaStore.Files.FileColumns.DATA));
if (filepath != null) {
File file = new File(filepath);
if (file.exists()) {
try {
String path = new String(filepath.getBytes("UTF-8"));
String fileName = path.substring(path.lastIndexOf(File.separator) + 1);
long fileSize = file.getTotalSpace();
LocalFile localFile = new LocalFile();
localFile.setFileName(fileName);
localFile.setFilePath(path);
localFile.setFileSize(fileSize);
searchFileList.add(localFile);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
} while (cursor.moveToNext());
}
if (!cursor.isClosed()) {
cursor.close();
}
}
return searchFileList;
}
/**
* 判断文件是否存在
*/
public static boolean isFileExist(String filePath) {
if (filePath == null) {
return false;
}
File file = new File(filePath);
return file.exists();
}
}