package com.hdl.photovoltaic.utils; import android.content.Context; import android.util.Log; import com.hdl.photovoltaic.other.HdlLogLogic; 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[(int) f.length()]; fis.read(bytes); fis.close(); fileContent = new String(bytes, 0, bytes.length); return fileContent; } catch (Exception e1) { e1.printStackTrace(); Log.d(TAG, "Error: Input File not find!"); return ""; } } }