package com.hdl.photovoltaic.utils;
|
|
import android.content.Context;
|
import android.graphics.Bitmap;
|
import android.graphics.BitmapFactory;
|
import android.util.Log;
|
|
import com.hdl.photovoltaic.other.HdlLogLogic;
|
|
import java.io.BufferedInputStream;
|
import java.io.BufferedOutputStream;
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.io.FileNotFoundException;
|
import java.io.FileOutputStream;
|
import java.io.IOException;
|
import java.io.OutputStreamWriter;
|
import java.nio.charset.StandardCharsets;
|
import java.util.Objects;
|
|
|
public class FileUtils {
|
|
private static final String TAG = "FileUtils";
|
|
/**
|
* 获取内部存储文件路径
|
*
|
* @param context 上下文
|
* @return -
|
*/
|
public static String getInternalStoreFilesPath(Context context) {
|
if (context == null) {
|
return "";
|
}
|
return context.getFilesDir().getAbsolutePath();
|
}
|
|
public static File createFile(String dirPath, String fileName) {
|
try {
|
File dirFile = new File(dirPath);
|
if (!dirFile.exists()) {
|
if (!createFileDir(dirFile)) {
|
HdlLogLogic.print(TAG, "createFile dirFile.mkdirs fail");
|
return null;
|
}
|
} else if (!dirFile.isDirectory()) {
|
boolean delete = dirFile.delete();
|
if (delete) {
|
return createFile(dirPath, fileName);
|
} else {
|
HdlLogLogic.print(TAG, "createFile dirFile !isDirectory and delete fail");
|
return null;
|
}
|
}
|
File file = new File(dirPath, fileName);
|
if (!file.exists()) {
|
if (!file.createNewFile()) {
|
Log.e(TAG, "createFile createNewFile fail");
|
return null;
|
}
|
}
|
return file;
|
} catch (Exception e) {
|
HdlLogLogic.print(TAG, "createFile fail :" + e.getMessage());
|
e.printStackTrace();
|
return null;
|
}
|
}
|
|
/**
|
* 创建文件夹---之所以要一层层创建,是因为一次性创建多层文件夹可能会失败!
|
*/
|
public static boolean createFileDir(File dirFile) {
|
if (dirFile == null) {
|
return true;
|
}
|
if (dirFile.exists()) {
|
return true;
|
}
|
File parentFile = dirFile.getParentFile();
|
if (parentFile != null && !parentFile.exists()) {
|
//父文件夹不存在,则先创建父文件夹,再创建自身文件夹
|
return createFileDir(parentFile) && createFileDir(dirFile);
|
} else {
|
boolean mkdirs = dirFile.mkdirs();
|
boolean isSuccess = mkdirs || dirFile.exists();
|
if (!isSuccess) {
|
Log.e("FileUtil", "createFileDir fail " + dirFile);
|
}
|
return isSuccess;
|
}
|
}
|
|
public static void writeFile(String path, String data) {
|
try {
|
File file = new File(path);
|
if (!file.exists()) {
|
if (!file.mkdir() && !file.isDirectory()) {
|
HdlLogLogic.print(TAG, "Error: make dir failed!");
|
return;
|
}
|
}
|
FileOutputStream d = new FileOutputStream(file);
|
d.write(data.getBytes());
|
d.flush();
|
d.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
|
}
|
|
public static String readFile(String filepath) {
|
try {
|
String fileContent = "";
|
if (null == filepath) {
|
Log.d(TAG, "Error: Invalid file name!");
|
return fileContent;
|
}
|
|
File f = new File(filepath);
|
if (!f.exists()) {
|
return fileContent;
|
}
|
FileInputStream fis = new FileInputStream(f);
|
byte[] bytes = new byte[fis.available()];
|
fis.read(bytes);
|
fis.close();
|
fileContent = new String(bytes);
|
return fileContent;
|
} catch (Exception e1) {
|
e1.printStackTrace();
|
Log.d(TAG, "Error: Input File not find!");
|
return "";
|
}
|
|
}
|
|
/**
|
* 把位图数据保存到指定路径的图片文件
|
*/
|
public static void writeImage(String path, Bitmap bitmap) {
|
try {
|
//根据指定文件路径构建缓存输出流对象
|
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path));
|
//把位图数据压缩到缓存输出流中
|
bitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos);
|
//完成缓存输出流的写入动作
|
bos.flush();
|
//关闭缓存输出流
|
bos.close();
|
|
|
} catch (Exception e) {
|
}
|
}
|
|
/**
|
* 从指定路径的图片文件中读取位图数据
|
*/
|
public static Bitmap readImage(String path) {
|
try {
|
//根据指定文件路径构建缓存输入流对象
|
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));
|
//从缓存输入流中解码位图数据
|
Bitmap bitmap = BitmapFactory.decodeStream(bis);
|
//关闭缓存输入流
|
bis.close();
|
return bitmap;
|
|
|
} catch (Exception e) {
|
}
|
return null;
|
}
|
|
}
|