From 971a24a9e58a21bc306897fd3ad63012a399f7db Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期五, 23 五月 2025 14:07:18 +0800
Subject: [PATCH] Merge branch '1.2.1' into 1.2.0_google

---
 app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java |  236 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 201 insertions(+), 35 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java
index 012a181..5093d22 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java
@@ -1,11 +1,18 @@
 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;
 
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
@@ -13,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;
 
 /**
@@ -27,9 +33,9 @@
     private static volatile HdlFileLogic sHdlFileLogic;
 
     /**
-     * 琛ㄧず1m澶у皬鏁版嵁
+     * 琛ㄧず0.5m澶у皬鏁版嵁
      */
-    private final int m = 1;
+    private final double mDataSize = 0.5;
 
     /**
      * 鑾峰彇褰撳墠瀵硅薄
@@ -96,11 +102,31 @@
     }
 
     /**
+     * 鑾峰彇涓枃銆恓son璧勬簮鏂囦欢澶广�戝叏璺緞
+     *
+     * @param deviceModel 璁惧鍨嬪彿
+     */
+    public String getHdlESLocalJsonZhRootPath(String deviceModel) {
+        return getAPPInternalStoreFilesPath() + "/hdlESLocalJson/" + LocalManageUtil.zh + "/" + deviceModel;
+    }
+
+    /**
+     * 鑾峰彇鑻辨枃銆恓son璧勬簮鏂囦欢澶广�戝叏璺緞
+     *
+     * @param deviceModel 璁惧鍨嬪彿
+     */
+    public String getHdlESLocalJsonEnRootPath(String deviceModel) {
+        return getAPPInternalStoreFilesPath() + "/hdlESLocalJson/" + LocalManageUtil.en + "/" + deviceModel;
+    }
+
+
+    /**
      * 鑾峰彇銆愭棩蹇楁枃浠躲�戝叏璺緞
      */
     public String getLogFileNamePath() {
         return getCurrentHomeRootPath() + "/log.txt";
     }
+
 
     /**
      * 鑾峰彇銆愮敤鎴锋枃浠躲�戝叏璺緞
@@ -110,6 +136,27 @@
     }
 
     /**
+     * 鑾峰彇涓枃銆恓son璧勬簮鏂囦欢銆戝叏璺緞
+     */
+    public String getHdlESLocalJsonZhFilePath(String deviceModel, String fileName) {
+        if (!fileName.endsWith(".json")) {
+            fileName += ".json";
+        }
+        return getAPPInternalStoreFilesPath() + "/hdlESLocalJson/" + LocalManageUtil.zh + "/" + deviceModel + "/" + fileName;
+    }
+
+    /**
+     * 鑾峰彇鑻辨枃銆恓son璧勬簮鏂囦欢銆戝叏璺緞
+     */
+    public String getHdlESLocalJsonEnFilePath(String deviceModel, String fileName) {
+        if (!fileName.endsWith(".json")) {
+            fileName += ".json";
+        }
+        return getAPPInternalStoreFilesPath() + "/hdlESLocalJson/" + LocalManageUtil.en + "/" + deviceModel + "/" + fileName;
+    }
+
+
+    /**
      * 鑾峰彇椹卞姩鍗囩骇鏂囦欢鍏ㄨ矾寰�
      *
      * @param driverCode 椹卞姩缂栫爜
@@ -117,8 +164,20 @@
      * @return 鍏ㄨ矾寰�
      */
     public String getDrivePathFileName(String driverCode, String version) {
-        String driverFileName = driverCode + "_" + version + ".zip";
-        return HdlFileLogic.getInstance().getDriveRootPath() + "/" + driverFileName;
+        String fileName = driverCode + "_" + version + ".zip";
+        return HdlFileLogic.getInstance().getDriveRootPath() + "/" + fileName;
+    }
+
+    /**
+     * 鑾峰彇鍥轰欢鍗囩骇鏂囦欢鍏ㄨ矾寰�
+     *
+     * @param imageId 闀滃儚id
+     * @param version 椹卞姩鐗堟湰
+     * @return 鍏ㄨ矾寰�
+     */
+    public String getFirmwarePathFileName(String imageId, String version) {
+        String fileName = imageId + "_" + version + ".zip";
+        return HdlFileLogic.getInstance().getFirmwareRootPath() + "/" + fileName;
     }
 
     //endregion
@@ -135,6 +194,41 @@
         this.createFileDir(this.getDriveRootPath());
         //鍥轰欢鏂囦欢
         this.createFileDir(this.getFirmwareRootPath());
+    }
+
+    /**
+     * 棰勫垱寤簀son璧勬簮鏂囦欢澶�
+     */
+    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
 
     }
 
@@ -149,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;
@@ -182,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());
         }
@@ -205,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;
@@ -226,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;
@@ -257,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());
         }
 
     }
@@ -297,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);//杩欎釜鏂规硶涓嶅吋鐢╝ndroid 6.0
+            fis.close();
+            System.out.println("璇诲彇鏂囦欢鎴愬姛---" + filePath);
+            return bytes;
+        } catch (Exception e1) {
+            System.out.println("璇诲彇鏂囦欢鏈夊紓甯�---" + e1.getMessage());
+            return null;
+        }
+
+    }
+
 
     /**
      * 璇诲彇鏂囦欢
@@ -324,25 +446,16 @@
                 return null;
             }
             FileInputStream fis = new FileInputStream(f);
-//            byte[] bytes = new byte[fis.available()];
-            byte[] readByte = new byte[1024];
-            List<Byte> byteList = new ArrayList<>();
-            int len = 0;
-            while ((len = fis.read(readByte)) != -1) {
-                for (int i = 0; i < len; i++) {
-                    byteList.add(readByte[i]);
-                }
-            }
-            Byte[] forbByte = byteList.toArray(new Byte[0]);
-            byte[] bytes = new byte[forbByte.length];
-            for (int i = 0; i < forbByte.length; i++) {
-                bytes[i] = forbByte[i];
-            }
+            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;
         }
 
@@ -356,7 +469,6 @@
      */
     public String readFile(String filePath) {
         try {
-
             byte[] bytes = readFileByte(filePath);
             if (bytes == null) {
                 return "";
@@ -367,6 +479,32 @@
         }
 
     }
+
+    /**
+     * 璇诲彇鏂囦欢
+     *
+     * @param filePath 鍏ㄨ矾寰�
+     * @return 鏁版嵁
+     */
+    public FileInputStream fileStream(String filePath) {
+        try {
+            if (!isBoolean(filePath)) {
+                return null;
+            }
+            File f = new File(filePath);
+            if (!f.exists()) {
+                return null;
+            }
+            fileLength = f.length();
+            return new FileInputStream(f);
+        } catch (Exception e1) {
+            System.out.println("璇诲彇鏂囦欢鏈夊紓甯�---" + e1.getMessage());
+            return null;
+        }
+
+    }
+
+    public static long fileLength = 0;
 
     /**
      * 鎸囧畾鍒犻櫎鏂囦欢琛屾暟锛堜粠鍓嶉潰鍒犻櫎璧凤級
@@ -409,6 +547,34 @@
     }
 
     /**
+     * 鎵撳紑璧勬簮鏂囦欢
+     *
+     * @param fileName 鏂囦欢鍚�
+     * @param context  涓婁笅鏂�
+     * @return 杩斿洖json瀛楃涓�
+     */
+    public String openAssetsFileJson(String fileName, Context context) {
+        if (TextUtils.isEmpty(fileName)) {
+            return "";
+        }
+        //灏唈son鏁版嵁鍙樻垚瀛楃涓�
+        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 璺緞
@@ -416,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;

--
Gitblit v1.8.0