wjc
2025-05-23 971a24a9e58a21bc306897fd3ad63012a399f7db
app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java
@@ -1,11 +1,16 @@
package com.hdl.photovoltaic.other;
import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
import android.text.TextUtils;
import com.hdl.photovoltaic.HDLApp;
import com.hdl.photovoltaic.config.ConstantManage;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.utils.LocalManageUtil;
import org.apache.commons.io.FileUtils;
@@ -15,10 +20,9 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
@@ -29,9 +33,9 @@
    private static volatile HdlFileLogic sHdlFileLogic;
    /**
     * 表示1m大小数据
     * 表示0.5m大小数据
     */
    private final int m = 1;
    private final double mDataSize = 0.5;
    /**
     * 获取当前对象
@@ -98,11 +102,31 @@
    }
    /**
     * 获取中文【json资源文件夹】全路径
     *
     * @param deviceModel 设备型号
     */
    public String getHdlESLocalJsonZhRootPath(String deviceModel) {
        return getAPPInternalStoreFilesPath() + "/hdlESLocalJson/" + LocalManageUtil.zh + "/" + deviceModel;
    }
    /**
     * 获取英文【json资源文件夹】全路径
     *
     * @param deviceModel 设备型号
     */
    public String getHdlESLocalJsonEnRootPath(String deviceModel) {
        return getAPPInternalStoreFilesPath() + "/hdlESLocalJson/" + LocalManageUtil.en + "/" + deviceModel;
    }
    /**
     * 获取【日志文件】全路径
     */
    public String getLogFileNamePath() {
        return getCurrentHomeRootPath() + "/log.txt";
    }
    /**
     * 获取【用户文件】全路径
@@ -110,6 +134,27 @@
    public String getUserFilePath() {
        return getAPPInternalStoreFilesPath() + "/userConfigManage.txt";
    }
    /**
     * 获取中文【json资源文件】全路径
     */
    public String getHdlESLocalJsonZhFilePath(String deviceModel, String fileName) {
        if (!fileName.endsWith(".json")) {
            fileName += ".json";
        }
        return getAPPInternalStoreFilesPath() + "/hdlESLocalJson/" + LocalManageUtil.zh + "/" + deviceModel + "/" + fileName;
    }
    /**
     * 获取英文【json资源文件】全路径
     */
    public String getHdlESLocalJsonEnFilePath(String deviceModel, String fileName) {
        if (!fileName.endsWith(".json")) {
            fileName += ".json";
        }
        return getAPPInternalStoreFilesPath() + "/hdlESLocalJson/" + LocalManageUtil.en + "/" + deviceModel + "/" + fileName;
    }
    /**
     * 获取驱动升级文件全路径
@@ -126,12 +171,12 @@
    /**
     * 获取固件升级文件全路径
     *
     * @param oid     该固件oid
     * @param imageId 镜像id
     * @param version 驱动版本
     * @return 全路径
     */
    public String getFirmwarePathFileName(String oid, String version) {
        String fileName = oid + "_" + version + ".zip";
    public String getFirmwarePathFileName(String imageId, String version) {
        String fileName = imageId + "_" + version + ".zip";
        return HdlFileLogic.getInstance().getFirmwareRootPath() + "/" + fileName;
    }
@@ -149,6 +194,41 @@
        this.createFileDir(this.getDriveRootPath());
        //固件文件
        this.createFileDir(this.getFirmwareRootPath());
    }
    /**
     * 预创建json资源文件夹
     */
    public void createHdlESLocalJsonDirectory() {
        //中文文件夹
        //并网-逆变器
        this.createFileDir(this.getHdlESLocalJsonZhRootPath(HdlESLocalJsonLogic.DeviceModel.INV));//并网-逆变器
        this.createFileDir(this.getHdlESLocalJsonZhRootPath(HdlESLocalJsonLogic.DeviceModel.LC));//负载中心
        this.createFileDir(this.getHdlESLocalJsonZhRootPath(HdlESLocalJsonLogic.DeviceModel.INV_BMS));//BMS
        this.createFileDir(this.getHdlESLocalJsonZhRootPath(HdlESLocalJsonLogic.DeviceModel.INV_BATTERY));//电池包
        //离线-逆变器
        this.createFileDir(this.getHdlESLocalJsonZhRootPath(HdlESLocalJsonLogic.DeviceModel.OFF_INV));//离线-逆变器
        this.createFileDir(this.getHdlESLocalJsonZhRootPath(HdlESLocalJsonLogic.DeviceModel.OFF_INV_BMS));//离网-逆变器-虚拟BMS
        this.createFileDir(this.getHdlESLocalJsonZhRootPath(HdlESLocalJsonLogic.DeviceModel.OFF_INV_BATTERY));//离网-逆变器-电池包
        //离线-3.6kw逆变器
        this.createFileDir(this.getHdlESLocalJsonZhRootPath(HdlESLocalJsonLogic.DeviceModel.OFF_INV_3));//离线-逆变器
        this.createFileDir(this.getHdlESLocalJsonZhRootPath(HdlESLocalJsonLogic.DeviceModel.OFF_INV_BMS_3));//离网-逆变器-虚拟BMS
        //英文文件夹
        this.createFileDir(this.getHdlESLocalJsonEnRootPath(HdlESLocalJsonLogic.DeviceModel.INV));
        this.createFileDir(this.getHdlESLocalJsonEnRootPath(HdlESLocalJsonLogic.DeviceModel.LC));
        this.createFileDir(this.getHdlESLocalJsonEnRootPath(HdlESLocalJsonLogic.DeviceModel.INV_BMS));
        this.createFileDir(this.getHdlESLocalJsonEnRootPath(HdlESLocalJsonLogic.DeviceModel.INV_BATTERY));
        //离线逆变器
        this.createFileDir(this.getHdlESLocalJsonEnRootPath(HdlESLocalJsonLogic.DeviceModel.OFF_INV));//离线-逆变器
        this.createFileDir(this.getHdlESLocalJsonEnRootPath(HdlESLocalJsonLogic.DeviceModel.OFF_INV_BMS));//离网-逆变器-虚拟BMS
        this.createFileDir(this.getHdlESLocalJsonEnRootPath(HdlESLocalJsonLogic.DeviceModel.OFF_INV_BATTERY));//离网-逆变器-电池包
        //离线-3.6kw逆变器
        this.createFileDir(this.getHdlESLocalJsonEnRootPath(HdlESLocalJsonLogic.DeviceModel.OFF_INV_3));//离线-逆变器
        this.createFileDir(this.getHdlESLocalJsonEnRootPath(HdlESLocalJsonLogic.DeviceModel.OFF_INV_BMS_3));//离网-逆变器-虚拟BMS
    }
@@ -163,7 +243,7 @@
            File file = new File(fullPath);
            if (!file.isDirectory()) {
                boolean succeed = file.mkdirs();
                System.out.println("创建文件夹路径=" + file.getAbsolutePath() + "->->创建文件夹结果=" + succeed);
                System.out.println("创建文件夹路径---" + file.getAbsolutePath() + "===创建文件夹结果---" + succeed);
                return succeed;
            }
            return true;
@@ -196,7 +276,7 @@
            }
            // 删除文件夹本身
            boolean succeed = fileRoot.delete();//文件夹空这个方法才有效
            System.out.println("删除文件夹路径=" + fileRoot.getAbsolutePath() + "->->删除结果=" + succeed);
            System.out.println("删除文件夹路径---" + fileRoot.getAbsolutePath() + "===删除结果---" + succeed);
        } catch (Exception e) {
            System.out.println("删除文件夹有异常===" + e.getMessage());
        }
@@ -219,7 +299,7 @@
            File file = new File(fullPath);
            if (!file.exists()) {
                boolean succeed = file.createNewFile();
                System.out.println("创建文件路径=" + file.getAbsolutePath() + "->->创建文件结果=" + succeed);
                System.out.println("创建文件路径---" + file.getAbsolutePath() + "===创建文件结果---" + succeed);
                return succeed;
            }
            return true;
@@ -240,7 +320,7 @@
            File file = new File(fullPath);
            if (file.exists()) {
                boolean succeed = file.delete();
                System.out.println("删除文件===" + succeed);
                System.out.println("删除文件---" + fullPath + "===结果---" + succeed);
                return succeed;
            }
            return true;
@@ -271,9 +351,9 @@
            d.write(data);
            d.flush();
            d.close();
            System.out.println("写入文件成功==" + fullPath);
            System.out.println("写入文件成功---" + fullPath);
        } catch (Exception e) {
            System.out.println("写入文件有异常==" + e.getMessage());
            System.out.println("写入文件有异常---" + e.getMessage());
        }
    }
@@ -311,16 +391,44 @@
            d.write("\r\n".getBytes());// 写入一个换行
            d.flush();
            d.close();
            if (file.length() > 1024 * 1024 * m) {
                //文件大于1m,删除文件前10条日志
                this.delFileLien(fullPath, 10);
            if (file.length() > 1024 * 1024 * mDataSize) {
                //文件大于1m,删除文件前100条日志
                this.delFileLien(fullPath, 100);
            }
            System.out.println("写入一行数据到文件成功===" + dataLine);
//            System.out.println("写入一行数据到文件成功---" + dataLine);
        } catch (Exception e) {
            System.out.println("写入一行数据到文件有异常===" + e.getMessage());
            System.out.println("写入一行数据到文件有异常---" + e.getMessage());
        }
    }
    /**
     * 读取文件
     *
     * @param filePath 全路径
     * @return 数据
     */
    public byte[] readFileByte1(String filePath) {
        try {
            if (!isBoolean(filePath)) {
                return null;
            }
            File f = new File(filePath);
            if (!f.exists()) {
                return null;
            }
            FileInputStream fis = new FileInputStream(f);
            byte[] bytes = FileUtils.readFileToByteArray(f);//这个方法不兼用android 6.0
            fis.close();
            System.out.println("读取文件成功---" + filePath);
            return bytes;
        } catch (Exception e1) {
            System.out.println("读取文件有异常---" + e1.getMessage());
            return null;
        }
    }
    /**
     * 读取文件
@@ -338,12 +446,16 @@
                return null;
            }
            FileInputStream fis = new FileInputStream(f);
            byte[] bytes = FileUtils.readFileToByteArray(f);
            BufferedInputStream bis = new BufferedInputStream(fis);
            int fileLength = (int) f.length();
            byte[] bytes = new byte[fileLength];
            int len = bis.read(bytes);
            bis.close();
            fis.close();
            System.out.println("读取文件成功===" + filePath);
            System.out.println("读取文件成功---" + filePath);
            return bytes;
        } catch (Exception e1) {
            System.out.println("读取文件有异常===" + e1.getMessage());
            System.out.println("读取文件有异常---" + e1.getMessage());
            return null;
        }
@@ -386,7 +498,7 @@
            fileLength = f.length();
            return new FileInputStream(f);
        } catch (Exception e1) {
            System.out.println("读取文件有异常===" + e1.getMessage());
            System.out.println("读取文件有异常---" + e1.getMessage());
            return null;
        }
@@ -435,6 +547,34 @@
    }
    /**
     * 打开资源文件
     *
     * @param fileName 文件名
     * @param context  上下文
     * @return 返回json字符串
     */
    public String openAssetsFileJson(String fileName, Context context) {
        if (TextUtils.isEmpty(fileName)) {
            return "";
        }
        //将json数据变成字符串
        StringBuilder stringBuilder = new StringBuilder();
        try {
            //获取assets资源管理器
            AssetManager assetManager = context.getAssets();
            //通过管理器打开文件并读取
            BufferedReader bf = new BufferedReader(new InputStreamReader(assetManager.open(fileName)));
            String line;
            while ((line = bf.readLine()) != null) {
                stringBuilder.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return stringBuilder.toString();
    }
    /**
     * 判断路径是否合法
     *
     * @param path 路径
@@ -442,7 +582,7 @@
     */
    public boolean isBoolean(String path) {
        if (path.contains("//") || path.contains("\\")) {
            System.out.println("无效文件路径===" + path);
            System.out.println("无效文件路径---" + path);
            return false;
        }
        return true;