文件類型太多了,大多記不清,所以做個記錄
private static Map<String, String> MIME_MAP = new HashMap<>();
static {
MIME_MAP.put(".3gp", "video/3gpp");
MIME_MAP.put(".apk", "application/vnd.android.package-archive");
MIME_MAP.put(".asf", "video/x-ms-asf");
MIME_MAP.put(".avi", "video/x-msvideo");
MIME_MAP.put(".bin", "application/octet-stream");
MIME_MAP.put(".bmp", "image/bmp");
MIME_MAP.put(".c", "text/plain");
MIME_MAP.put(".class", "application/octet-stream");
MIME_MAP.put(".conf", "text/plain");
MIME_MAP.put(".cpp", "text/plain");
MIME_MAP.put(".doc", "application/msword");
MIME_MAP.put(".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
MIME_MAP.put(".xls", "application/vnd.ms-excel");
MIME_MAP.put(".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
MIME_MAP.put(".exe", "application/octet-stream");
MIME_MAP.put(".gif", "image/gif");
MIME_MAP.put(".gtar", "application/x-gtar");
MIME_MAP.put(".gz", "application/x-gzip");
MIME_MAP.put(".h", "text/plain");
MIME_MAP.put(".htm", "text/html");
MIME_MAP.put(".html", "text/html");
MIME_MAP.put(".jar", "application/java-archive");
MIME_MAP.put(".java", "text/plain");
MIME_MAP.put(".jpeg", "image/jpeg");
MIME_MAP.put(".jpg", "image/jpeg");
MIME_MAP.put(".js", "application/x-javascript");
MIME_MAP.put(".log", "text/plain");
MIME_MAP.put(".m3u", "audio/x-mpegurl");
MIME_MAP.put(".m4a", "audio/mp4a-latm");
MIME_MAP.put(".m4b", "audio/mp4a-latm");
MIME_MAP.put(".m4p", "audio/mp4a-latm");
MIME_MAP.put(".m4u", "video/vnd.mpegurl");
MIME_MAP.put(".m4v", "video/x-m4v");
MIME_MAP.put(".mov", "video/quicktime");
MIME_MAP.put(".mp2", "audio/x-mpeg");
MIME_MAP.put(".mp3", "audio/x-mpeg");
MIME_MAP.put(".mp4", "video/mp4");
MIME_MAP.put(".mpc", "application/vnd.mpohun.certificate");
MIME_MAP.put(".mpe", "video/mpeg");
MIME_MAP.put(".mpeg", "video/mpeg");
MIME_MAP.put(".mpg", "video/mpeg");
MIME_MAP.put(".mpg4", "video/mp4");
MIME_MAP.put(".mpga", "audio/mpeg");
MIME_MAP.put(".msg", "application/vnd.ms-outlook");
MIME_MAP.put(".ogg", "audio/ogg");
MIME_MAP.put(".pdf", "application/pdf");
MIME_MAP.put(".png", "image/png");
MIME_MAP.put(".pps", "application/vnd.ms-powerpoint");
MIME_MAP.put(".ppt", "application/vnd.ms-powerpoint");
MIME_MAP.put(".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation");
MIME_MAP.put(".prop", "text/plain");
MIME_MAP.put(".rc", "text/plain");
MIME_MAP.put(".rmvb", "audio/x-pn-realaudio");
MIME_MAP.put(".rtf", "application/rtf");
MIME_MAP.put(".sh", "text/plain");
MIME_MAP.put(".tar", "application/x-tar");
MIME_MAP.put(".tgz", "application/x-compressed");
MIME_MAP.put(".txt", "text/plain");
MIME_MAP.put(".wav", "audio/x-wav");
MIME_MAP.put(".wma", "audio/x-ms-wma");
MIME_MAP.put(".wmv", "audio/x-ms-wmv");
MIME_MAP.put(".wps", "application/vnd.ms-works");
MIME_MAP.put(".xml", "text/plain");
MIME_MAP.put(".z", "application/x-compress");
MIME_MAP.put(".zip", "application/x-zip-compressed");
}
讀取文件類型:
public static String getMimeTypeFromFile(File file) {
String type = "*/*";
String fName = file.getName();
//獲取後綴名前的分隔符"."在fName中的位置。
int dotIndex = fName.lastIndexOf(".");
if (dotIndex > 0) {
//獲取文件的後綴名
String end = fName.substring(dotIndex).toLowerCase(Locale.getDefault());
//在MIME和文件類型的匹配表中找到對應的MIME類型。
String MIME = MIME_MAP.get(end);
if (!TextUtils.isEmpty(MIME)) {
type = MIME;
}
}
return type;
}
文件工具類:
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.support.v4.content.FileProvider;
import android.text.TextUtils;
import android.text.format.Formatter;
import android.util.Log;
import com.cmct.libcommon.Constants.Constants;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.StringTokenizer;
public class FileUtil {
// public static final String APP_CACHE_DIR = "/zdit";
public static final String DATA_CACHE_DIR = "/cache/";// 存放數據緩存文件,如json數據等
public static final String IMAGE_CACHE_DIR = "/images";// 存放圖片文件緩存文件
public static final String CRASH_CACHE_DIR = "/crash"; // 程序崩潰日誌
public static final String DOWNLOAD_CACHE_DIR = "/download";// 存放下載的apk
public static final String TAKE_PHOTO = "/照片";//拍照存放地址
public static final String VIDEO = "/video"; //video 存放地址
public static final String AUDIO = "/audio"; //audio 存放地址
public static final String FLASH_CACHE_DIR = "flashconfigure";
/**
* 檢測Sdcard是否存在
*
* @return
*/
public static boolean isExitsSdcard() {
return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
}
/**
* 初始化緩存文件路徑
*/
public static void prepareDir() {
File dataCache = new File(getDataCachePath());
if (!dataCache.exists()) {
dataCache.mkdirs();
}
File imageCache = new File(getImageCachePath());
if (!imageCache.exists()) {
imageCache.mkdirs();
}
File crashCache = new File(getCrashCachePath());
if (!crashCache.exists()) {
crashCache.mkdirs();
}
File downloadCache = new File(getDownloadCachePath());
if (!downloadCache.exists()) {
downloadCache.mkdirs();
}
}
public static String getFlashDataCache() {
return getDataCachePath() + FLASH_CACHE_DIR;
}
public static String getAppCachePath() {
return Constants.PATH_CACHE;
}
public static String getDataCachePath() {
return getAppCachePath() + DATA_CACHE_DIR;
}
public static String getImageCachePath() {
return getAppCachePath() + IMAGE_CACHE_DIR;
}
public static String getCrashCachePath() {
return getAppCachePath() + CRASH_CACHE_DIR;
}
public static String getDownloadCachePath() {
return getAppCachePath() + DOWNLOAD_CACHE_DIR;
}
public static String getPhotoPath() {
return getAppCachePath() + TAKE_PHOTO;
}
public static String getVideoPath() {
return getAppCachePath() + VIDEO;
}
public static String getAudioPath() {
return getAppCachePath() + AUDIO;
}
/**
* 判斷sd卡是否存在
*
* @return
*/
public boolean isSDCardExist() {
return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
}
/**
* 判斷文件夾是否存在 , 若不存在 則創建
*
* @param path
* @return
*/
public void isExists(String path) {
StringTokenizer st = new StringTokenizer(path, "/");
String path1 = st.nextToken() + "/";
String path2 = path1;
while (st.hasMoreTokens()) {
path1 = st.nextToken() + "/";
path2 += path1;
File inbox = new File(path2);
if (!inbox.exists())
inbox.mkdir();
}
}
// /**
// * @param fileName
// */
// public static String readFileByLines(String fileName) {
// String layout = "";
// try {
// FileInputStream fin = new FileInputStream(fileName);
// int length = fin.available();
// byte[] buffer = new byte[length + 1024];
// fin.read(buffer);
// layout = EncodingUtils.getString(buffer, "UTF-8");
// fin.close();
// } catch (Exception e) {
// e.printStackTrace();
// return "";
// }
// return layout.trim();
// }
public static void cacheStringToFile(String str, String filename) {
File f = new File(filename);
if (f.exists()) {
f.delete();
}
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
try {
FileOutputStream fos = new FileOutputStream(f, true);
fos.write(str.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static long getFileSize(String path) {
File file = new File(path);
long s = 0;
if (file.exists()) {
try {
FileInputStream fis = null;
fis = new FileInputStream(file);
s = fis.available();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
} else {
Log.e("file", "file is not exist");
}
return s / 1024;
}
public static byte[] fileToByte(String path) {
if (TextUtils.isEmpty(path)) {
return null;
}
File file = new File(path);
FileInputStream fin = null;
try {
fin = new FileInputStream(file);
byte[] buffer = new byte[fin.available()];
fin.read(buffer);
fin.close();
return buffer;
} catch (Exception e) {
e.printStackTrace();
if (fin != null) {
try {
fin.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
return null;
}
}
public static long getCacheSize(String path) {
long total = 0;
File file = new File(path);
if (file == null || !file.exists()) {
return total;
}
if (file.isFile()) {
total = file.length();
} else if (file.isDirectory()) {
File[] fileList = file.listFiles();
for (int i = 0; i < fileList.length; i++) {
total += getCacheSize(fileList[i].getAbsolutePath());
}
}
return total;
}
public static long getCacheSize(File file) {
long total = 0;
if (file == null || !file.exists()) {
return total;
}
if (file.isFile()) {
total = file.length();
} else if (file.isDirectory()) {
File[] fileList = file.listFiles();
for (int i = 0; i < fileList.length; i++) {
total += getCacheSize(fileList[i].getAbsolutePath());
}
}
return total;
}
public static String calculateSizeToString(long size) {
if (size == 0) {
return "0B";
}
String str = "";
DecimalFormat df = new DecimalFormat("#.00");
if (size < 1024) {
str = df.format(size) + "B";
} else if (size < 1024 * 1024) {
str = df.format(size / 1024) + "KB";
} else if (size < 1024 * 1024 * 1024) {
str = df.format(size / 1024 / 1024) + "M";
} else {
str = df.format(size / 1024 / 1024 / 1024) + "G";
}
return str;
}
public static String calculateSizeToString(Context ctx, long size) {
return Formatter.formatFileSize(ctx, size);
}
public static boolean deleteFiles(String path) {
File file = new File(path);
boolean flag = false;
if (file == null || !file.exists()) {
return flag;
}
if (file.isFile()) {
file.delete();
} else if (file.isDirectory()) {
File[] fileList = file.listFiles();
for (int i = 0; i < fileList.length; i++) {
flag = deleteFiles(fileList[i].getAbsolutePath());
// if(!flag){
// break;
// }
}
}
return flag;
}
public static boolean checkFilesIsNeedDelete(String path, long intervalTime) {
File file = new File(path);
if (file == null || !file.exists()) {
return false;
}
if (file.isFile()) {
return deleteFileByIntervalTime(file, intervalTime);
} else {
File[] fileList = file.listFiles();
if (fileList != null && fileList.length > 0) {
for (int i = 0; i < fileList.length; i++) {
File temp = fileList[i];
if (temp.isDirectory()) {
checkFilesIsNeedDelete(temp.getAbsolutePath(), intervalTime);
} else {
deleteFileByIntervalTime(temp, intervalTime);
}
}
}
}
return true;
}
public static boolean deleteFileByIntervalTime(File file, long intervalTime) {
long time = System.currentTimeMillis();
if (time - file.lastModified() > intervalTime) {
file.delete();
return true;
} else {
return false;
}
}
/**
* 將數據寫入一個文件
*
* @param destFilePath 要創建的文件的路徑
* @param data 待寫入的文件數據
* @param startPos 起始偏移量
* @param length 要寫入的數據長度
* @return 成功寫入文件返回true, 失敗返回false
*/
public static boolean writeFile(String destFilePath, byte[] data, int startPos, int length) {
try {
if (!createFile(destFilePath)) {
return false;
}
FileOutputStream fos = new FileOutputStream(destFilePath);
fos.write(data, startPos, length);
fos.flush();
if (null != fos) {
fos.close();
fos = null;
}
return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
/**
* 從一個輸入流裏寫文件
*
* @param destFilePath 要創建的文件的路徑
* @param in 要讀取的輸入流
* @return 寫入成功返回true, 寫入失敗返回false
*/
public static boolean writeFile(String destFilePath, InputStream in) {
try {
if (!createFile(destFilePath)) {
return false;
}
FileOutputStream fos = new FileOutputStream(destFilePath);
int readCount = 0;
int len = 1024;
byte[] buffer = new byte[len];
while ((readCount = in.read(buffer)) != -1) {
fos.write(buffer, 0, readCount);
}
fos.flush();
if (null != fos) {
fos.close();
fos = null;
}
if (null != in) {
in.close();
in = null;
}
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
public static boolean appendFile(String filename, byte[] data, int datapos, int datalength) {
try {
createFile(filename);
RandomAccessFile rf = new RandomAccessFile(filename, "rw");
rf.seek(rf.length());
rf.write(data, datapos, datalength);
if (rf != null) {
rf.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
/**
* 讀取文件,返回以byte數組形式的數據
*
* @param filePath 要讀取的文件路徑名
* @return
*/
public static byte[] readFile(String filePath) {
try {
if (isFileExist(filePath)) {
FileInputStream fi = new FileInputStream(filePath);
return readInputStream(fi);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
/**
* 從一個數量流裏讀取數據,返回以byte數組形式的數據。 </br></br>
* 需要注意的是,如果這個方法用在從本地文件讀取數據時,一般不會遇到問題,
* 但如果是用於網絡操作,就經常會遇到一些麻煩(available()方法的問題)。所以如果是網絡流不應該使用這個方法。
*
* @param in 要讀取的輸入流
* @return
* @throws IOException
*/
public static byte[] readInputStream(InputStream in) {
try {
ByteArrayOutputStream os = new ByteArrayOutputStream();
byte[] b = new byte[in.available()];
int length = 0;
while ((length = in.read(b)) != -1) {
os.write(b, 0, length);
}
b = os.toByteArray();
in.close();
in = null;
os.close();
os = null;
return b;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 讀取網絡流
*
* @param in
* @return
*/
public static byte[] readNetWorkInputStream(InputStream in) {
ByteArrayOutputStream os = null;
try {
os = new ByteArrayOutputStream();
int readCount = 0;
int len = 1024;
byte[] buffer = new byte[len];
while ((readCount = in.read(buffer)) != -1) {
os.write(buffer, 0, readCount);
}
in.close();
in = null;
return os.toByteArray();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != os) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
os = null;
}
}
return null;
}
/**
* 將一個文件拷貝到另外一個地方
*
* @param sourceFile 源文件地址
* @param destFile 目的地址
* @param shouldOverlay 是否覆蓋
* @return
*/
public static boolean copyFiles(String sourceFile, String destFile, boolean shouldOverlay) {
try {
if (shouldOverlay) {
deleteFile(destFile);
}
FileInputStream fi = new FileInputStream(sourceFile);
writeFile(destFile, fi);
return true;
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return false;
}
/**
* 判斷文件是否存在
*
* @param filePath 路徑名
* @return
*/
public static boolean isFileExist(String filePath) {
File file = new File(filePath);
return file.exists();
}
public static boolean isFileExist(String filePath, String filename) {
File file = new File(filePath, filename);
return file.exists();
}
/**
* 創建一個文件,創建成功返回true
*
* @param filePath
* @return
*/
public static boolean createFile(String filePath) {
try {
File file = new File(filePath);
if (file.exists()) {
file.delete();
}
if (!file.exists()) {
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
return file.createNewFile();
}
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
/**
* 刪除一個文件
*
* @param filePath 要刪除的文件路徑名
* @return true if this file was deleted, false otherwise
*/
public static boolean deleteFile(String filePath) {
try {
File file = new File(filePath);
if (file.exists()) {
return file.delete();
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
/**
* 刪除 directoryPath目錄下的所有文件,包括刪除刪除文件夾
*
* @param dir
*/
public static void deleteDirectory(File dir) {
if (dir.isDirectory()) {
File[] listFiles = dir.listFiles();
for (int i = 0; i < listFiles.length; i++) {
deleteDirectory(listFiles[i]);
}
}
dir.delete();
}
/**
* 字符串轉流
*
* @param str
* @return
*/
public static InputStream String2InputStream(String str) {
ByteArrayInputStream stream = new ByteArrayInputStream(str.getBytes());
return stream;
}
/**
* 流轉字符串
*
* @param is
* @return
*/
public static String inputStream2String(InputStream is) {
BufferedReader in = new BufferedReader(new InputStreamReader(is));
StringBuffer buffer = new StringBuffer();
String line = "";
try {
while ((line = in.readLine()) != null) {
buffer.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return buffer.toString();
}
// 批量更改文件後綴
public static void reNameSuffix(File dir, String oldSuffix, String newSuffix) {
if (dir.isDirectory()) {
File[] listFiles = dir.listFiles();
for (int i = 0; i < listFiles.length; i++) {
reNameSuffix(listFiles[i], oldSuffix, newSuffix);
}
} else {
dir.renameTo(new File(dir.getPath().replace(oldSuffix, newSuffix)));
}
}
public static void writeImage(Bitmap bitmap, String destPath, int quality) {
try {
FileUtil.deleteFile(destPath);
if (FileUtil.createFile(destPath)) {
FileOutputStream out = new FileOutputStream(destPath);
if (bitmap.compress(Bitmap.CompressFormat.JPEG, quality, out)) {
out.flush();
out.close();
out = null;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 獲取文件路徑後綴名
*
* @param filePath
* @return
*/
public static String getSuffix(String filePath) {
if (!TextUtils.isEmpty(filePath) && filePath.contains(".")) {
return filePath.substring(filePath.lastIndexOf("."));
}
return "";
}
private static Map<String, String> MIME_MAP = new HashMap<>();
static {
MIME_MAP.put(".3gp", "video/3gpp");
MIME_MAP.put(".apk", "application/vnd.android.package-archive");
MIME_MAP.put(".asf", "video/x-ms-asf");
MIME_MAP.put(".avi", "video/x-msvideo");
MIME_MAP.put(".bin", "application/octet-stream");
MIME_MAP.put(".bmp", "image/bmp");
MIME_MAP.put(".c", "text/plain");
MIME_MAP.put(".class", "application/octet-stream");
MIME_MAP.put(".conf", "text/plain");
MIME_MAP.put(".cpp", "text/plain");
MIME_MAP.put(".doc", "application/msword");
MIME_MAP.put(".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
MIME_MAP.put(".xls", "application/vnd.ms-excel");
MIME_MAP.put(".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
MIME_MAP.put(".exe", "application/octet-stream");
MIME_MAP.put(".gif", "image/gif");
MIME_MAP.put(".gtar", "application/x-gtar");
MIME_MAP.put(".gz", "application/x-gzip");
MIME_MAP.put(".h", "text/plain");
MIME_MAP.put(".htm", "text/html");
MIME_MAP.put(".html", "text/html");
MIME_MAP.put(".jar", "application/java-archive");
MIME_MAP.put(".java", "text/plain");
MIME_MAP.put(".jpeg", "image/jpeg");
MIME_MAP.put(".jpg", "image/jpeg");
MIME_MAP.put(".js", "application/x-javascript");
MIME_MAP.put(".log", "text/plain");
MIME_MAP.put(".m3u", "audio/x-mpegurl");
MIME_MAP.put(".m4a", "audio/mp4a-latm");
MIME_MAP.put(".m4b", "audio/mp4a-latm");
MIME_MAP.put(".m4p", "audio/mp4a-latm");
MIME_MAP.put(".m4u", "video/vnd.mpegurl");
MIME_MAP.put(".m4v", "video/x-m4v");
MIME_MAP.put(".mov", "video/quicktime");
MIME_MAP.put(".mp2", "audio/x-mpeg");
MIME_MAP.put(".mp3", "audio/x-mpeg");
MIME_MAP.put(".mp4", "video/mp4");
MIME_MAP.put(".mpc", "application/vnd.mpohun.certificate");
MIME_MAP.put(".mpe", "video/mpeg");
MIME_MAP.put(".mpeg", "video/mpeg");
MIME_MAP.put(".mpg", "video/mpeg");
MIME_MAP.put(".mpg4", "video/mp4");
MIME_MAP.put(".mpga", "audio/mpeg");
MIME_MAP.put(".msg", "application/vnd.ms-outlook");
MIME_MAP.put(".ogg", "audio/ogg");
MIME_MAP.put(".pdf", "application/pdf");
MIME_MAP.put(".png", "image/png");
MIME_MAP.put(".pps", "application/vnd.ms-powerpoint");
MIME_MAP.put(".ppt", "application/vnd.ms-powerpoint");
MIME_MAP.put(".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation");
MIME_MAP.put(".prop", "text/plain");
MIME_MAP.put(".rc", "text/plain");
MIME_MAP.put(".rmvb", "audio/x-pn-realaudio");
MIME_MAP.put(".rtf", "application/rtf");
MIME_MAP.put(".sh", "text/plain");
MIME_MAP.put(".tar", "application/x-tar");
MIME_MAP.put(".tgz", "application/x-compressed");
MIME_MAP.put(".txt", "text/plain");
MIME_MAP.put(".wav", "audio/x-wav");
MIME_MAP.put(".wma", "audio/x-ms-wma");
MIME_MAP.put(".wmv", "audio/x-ms-wmv");
MIME_MAP.put(".wps", "application/vnd.ms-works");
MIME_MAP.put(".xml", "text/plain");
MIME_MAP.put(".z", "application/x-compress");
MIME_MAP.put(".zip", "application/x-zip-compressed");
}
public static void openFile(Context context, String path) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = getUri(intent, new File(path), context);
intent.setDataAndType(uri, getMimeTypeFromFile(new File(path)));
context.startActivity(intent);
}
private static Uri getUri(Intent intent, File file, Context context) {
Uri uri;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
//判斷版本是否在7.0以上
uri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileprovider", file);
//添加這一句表示對目標應用臨時授權該Uri所代表的文件
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
} else {
uri = Uri.fromFile(file);
}
return uri;
}
public static String getMimeTypeFromFile(File file) {
String type = "*/*";
String fName = file.getName();
//獲取後綴名前的分隔符"."在fName中的位置。
int dotIndex = fName.lastIndexOf(".");
if (dotIndex > 0) {
//獲取文件的後綴名
String end = fName.substring(dotIndex).toLowerCase(Locale.getDefault());
//在MIME和文件類型的匹配表中找到對應的MIME類型。
String MIME = MIME_MAP.get(end);
if (!TextUtils.isEmpty(MIME)) {
type = MIME;
}
}
return type;
}
}