123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329 |
- package com.sunzee.utils;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.text.TextUtils;
- import android.util.Log;
- import com.sunzee.model.domain.Name;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.RandomAccessFile;
- import java.net.FileNameMap;
- import java.net.URLConnection;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Random;
- /**
- * @Description 文件工具类
- */
- public class FileUtil {
- public static String FILEPATH = "/storage/emulated/0/logdata/";
- public static final long SEVENT_DAYS = 604800000;
- private static String TAG = "FileUtil";
- /**
- * 获取指定目录内所有文件路径
- *
- * @param dirPath 需要查询的文件目录
- * @param _type 查询类型,比如mp3
- */
- public static File[] getAllFiles(String dirPath, String _type) {
- File f = new File(dirPath);
- if (!f.exists()) {//判断路径是否存在
- if (f.mkdir()) {
- getAllFiles(dirPath, _type);
- }
- return null;
- }
- File[] files = f.listFiles();
- if (files == null) {//判断权限
- return null;
- }
- for (File _file : files) {//遍历目录
- String _name = _file.getName();
- String filePath = _file.getAbsolutePath();//获取文件路径
- String fileName = _file.getName().substring(0, _name.length() - 4);//获取文件名
- Log.d("LOGCAT", "fileName:" + fileName);
- Log.d("LOGCAT", "FILEPATH:" + filePath);
- }
- return files;
- }
- /**
- * 判断文件是否为图片
- *
- * @param filePath 路径
- * @return
- */
- public static boolean isImageFile(String filePath) {
- BitmapFactory.Options options = new BitmapFactory.Options();
- options.inJustDecodeBounds = true;
- BitmapFactory.decodeFile(filePath, options);
- if (options.outWidth == -1) {
- return false;
- }
- return true;
- }
- private final static String PREFIX_VIDEO = "video/";
- /**
- * Get the Mime Type from a File
- *
- * @param fileName 文件名
- * @return 返回MIME类型
- * thx https://www.oschina.net/question/571282_223549
- * add by fengwenhua 2017年5月3日09:55:01
- */
- private static String getMimeType(String fileName) {
- FileNameMap fileNameMap = URLConnection.getFileNameMap();
- String type = fileNameMap.getContentTypeFor(fileName);
- return type;
- }
- /**
- * 根据文件后缀名判断 文件是否是视频文件
- *
- * @param fileName 文件名
- * @return 是否是视频文件
- */
- public static boolean isVedioFile(String fileName) {
- String mimeType = getMimeType(fileName);
- if (!TextUtils.isEmpty(fileName) && mimeType.contains(PREFIX_VIDEO)) {
- return true;
- }
- return false;
- }
- public static String getDeviceId() {
- String deviceId = "";
- File file = new File("/storage/emulated/0/mht/deviceid.txt");
- String fileContent = getFileContent(file);
- if (file != null && !TextUtils.isEmpty(fileContent)) {
- //如果存在 直接获取
- Log.e(TAG, "getDeviceId: " + fileContent);
- deviceId = fileContent.trim();
- } else {
- //不存在 先生成再获取
- writeData();
- deviceId = getFileContent(file).trim();
- }
- int param = (int) SharedPreferencesUtils.getParam(Name.CONNECT_STATE, 10);
- if (param == 2) {
- return deviceId;
- } else {
- return "";
- }
- }
- private static void writeData() {
- String filePath = "/storage/emulated/0/mht/";
- String fileName = "deviceid.txt";
- String deviceId = "";
- long l = System.currentTimeMillis();
- Random random = new Random();
- String randomText = "";
- for (int i = 0; i < 4; i++) {
- int j = random.nextInt(1000);
- randomText = randomText + j;
- }
- deviceId = String.valueOf(l) + randomText;
- writeTxtToFile(deviceId, filePath, fileName);
- }
- // 将字符串写入到文本文件中
- private static void writeTxtToFile(String strcontent, String filePath, String fileName) {
- //生成文件夹之后,再生成文件,不然会出错
- makeFilePath(filePath, fileName);
- String strFilePath = filePath + fileName;
- // 每次写入时,都换行写
- String strContent = strcontent + "\r\n";
- try {
- File file = new File(strFilePath);
- if (!file.exists()) {
- Log.d("TestFile", "Create the file:" + strFilePath);
- file.getParentFile().mkdirs();
- file.createNewFile();
- }
- RandomAccessFile raf = new RandomAccessFile(file, "rwd");
- raf.seek(file.length());
- raf.write(strContent.getBytes());
- raf.close();
- } catch (Exception e) {
- Log.e("TestFile", "Error on write File:" + e);
- }
- }
- //生成文件
- private static File makeFilePath(String filePath, String fileName) {
- File file = null;
- makeRootDirectory(filePath);
- try {
- file = new File(filePath + fileName);
- if (!file.exists()) {
- file.createNewFile();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return file;
- }
- //生成文件夹
- private static void makeRootDirectory(String filePath) {
- File file = null;
- try {
- file = new File(filePath);
- if (!file.exists()) {
- file.mkdir();
- }
- } catch (Exception e) {
- Log.i("error:", e + "");
- }
- }
- //读取指定目录下的所有TXT文件的文件内容
- private static String getFileContent(File file) {
- String content = "";
- if (!file.isDirectory()) { //检查此路径名的文件是否是一个目录(文件夹)
- if (file.getName().endsWith("txt")) {//文件格式为""文件
- BufferedReader buffreader = null;
- try {
- buffreader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
- String line = "";
- //分行读取
- while ((line = buffreader.readLine()) != null) {
- content += line + "\n";
- }
- } catch (java.io.FileNotFoundException e) {
- Log.d("TestFile", "The File doesn't not exist.");
- } catch (IOException e) {
- Log.d("TestFile", e.getMessage());
- } finally {
- try {
- if (buffreader != null) {
- buffreader.close();//关闭输入流
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- return content;
- }
- //flie:要删除的文件夹的所在位置
- public static void deleteFile(File file) {
- if (file.isDirectory()) {
- File[] files = file.listFiles();
- for (int i = 0; i < files.length; i++) {
- File f = files[i];
- deleteFile(f);
- }
- // file.delete();//如要保留文件夹,只删除文件,请注释这行
- } else if (file.exists()) {
- file.delete();
- }
- }
- /**
- * 获取文件后缀名
- *
- * @param fileName
- * @return
- */
- public static String getFileType(String fileName) {
- return fileName.substring(fileName.lastIndexOf(".") + 1);
- }
- public static Bitmap getLoacalBitmap(String url) {
- FileInputStream fis = null;
- try {
- fis = new FileInputStream(url);
- return BitmapFactory.decodeStream(fis); ///把流转化为Bitmap图片
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- return null;
- } finally {
- if (fis != null) {
- try {
- fis.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- /**
- * 删除超过7天的log文件
- */
- public static void pastDueLog() {
- File logFolder = new File(FILEPATH);
- if (logFolder.exists()) {
- File[] logFiles = logFolder.listFiles();
- for (File file : logFiles) {
- SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
- String nowDate = format.format(new Date(System.currentTimeMillis()));
- //Log.d(TAG, "duibi: " + nowDate);
- try {
- String replace = file.getName().replace("-" + FileUtil.getDeviceId() + ".txt", "");
- Log.d(TAG, "pastDueLog: " + replace);
- Date dateFile = format.parse(replace);
- Date dataNow = format.parse(nowDate);
- long fileTime = dateFile.getTime();
- long nowTime = dataNow.getTime();
- if (nowTime - fileTime > SEVENT_DAYS) {
- //如果超过7天,我们就进行删除指定的文件,否则就什么都不做。
- //Log.d(TAG, "duibi: "+fileTime);
- //删除
- file.delete();
- }
- //Log.d(TAG, "duibi: "+dataNow);
- //Log.d(TAG, "duibi: " + file.getName());
- } catch (ParseException e) {
- //604800000 7天
- e.printStackTrace();
- }
- }
- }
- }
- /**
- * 获取当前时间
- *
- * @return
- */
- public static String getFileName() {
- SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
- String date = format.format(new Date(System.currentTimeMillis())) + "-" + FileUtil.getDeviceId() + ".txt";
- return date;
- }
- /**
- * 創建log文件
- */
- public static File createLogFile() {
- return makeFilePath(FILEPATH, FileUtil.getFileName());
- }
- }
|