Pārlūkot izejas kodu

1.再度优化分类监管统计文件大小逻辑

nzf 3 gadi atpakaļ
vecāks
revīzija
10621e75f9

+ 20 - 10
ruoyi-warehouse/src/main/java/com/ruoyi/reportManagement/service/impl/TWhgenlegServiceImpl.java

@@ -91,9 +91,10 @@ public class TWhgenlegServiceImpl implements ITWhgenlegService {
         String TRADE_NAME = "青岛道合供应链";
         // 报送日期
         String APPLY_DATE = new SimpleDateFormat("yyyyMMdd").format(nowDate);
+        File temp = null;
         try {
-            FileWriter fw =new FileWriter(getAbsoluteFile(fileName));
-            BufferedWriter bw = new BufferedWriter(fw);
+            temp = File.createTempFile("save", "null"); // 创建临时文件
+            BufferedWriter bw = new BufferedWriter(new FileWriter(temp)); // 给临时文件写入内容
             // 写入头部
             bw.write(
                     "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" +
@@ -183,21 +184,30 @@ public class TWhgenlegServiceImpl implements ITWhgenlegService {
                             "  </SDEPORT_DATA>\n" +
                             "</XMLObject>"
             );bw.newLine();
-            bw.close();
-            fw.close();
-            String path = getAbsoluteFile(fileName);
-            BufferedReader reader = new BufferedReader(new FileReader(path));
-            BufferedWriter bfw = new BufferedWriter(new FileWriter(fileName)); // 创建新的写入流
+            bw.close(); // 写入完毕
+            BufferedReader reader = new BufferedReader(new FileReader(temp));// 读取临时文件数据
+            FileWriter fw = new FileWriter(getAbsoluteFile(fileName)); // 创建要写入的文件
+            BufferedWriter bfw = new BufferedWriter(fw); // 创建新的写入流
             String lineText;
-            while ((lineText = reader.readLine()) != null) {
-                String newContent = lineText.replace("<FILE_SIZE>-1</FILE_SIZE>","<FILE_SIZE>"+ getFileSize(path) +"</FILE_SIZE>");
-                bfw.write(newContent);
+            while ((lineText = reader.readLine()) != null) { // 按行读取零食文件数据
+                // 替换其中参数
+                String newContent = lineText.replace("<FILE_SIZE>-1</FILE_SIZE>","<FILE_SIZE>"+ temp.length() +"</FILE_SIZE>");
+                // 写入指定文件并自动换行
+                bfw.write(newContent);bfw.newLine();
             }
+            // 刷新缓冲区
+            bfw.flush();
+            // 关闭读取流
+            reader.close();
             bfw.close(); // 关闭写入流
+            // 关闭需要写入的文件流
+            fw.close();
             return AjaxResult.success(fileName);
         } catch (Exception e) {
             e.printStackTrace();
             return AjaxResult.error("导出分类监管数据失败");
+        } finally {
+            temp.deleteOnExit(); // 删除创建的临时文件
         }
     }