فهرست منبع

解决txt、题卡、推送云阅卷乱码问题

wangliang 2 سال پیش
والد
کامیت
0fa97ee3b4

+ 7 - 9
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java

@@ -27,6 +27,7 @@ import com.qmth.teachcloud.common.enums.TaskStatusEnum;
 import com.qmth.teachcloud.common.service.BasicAttachmentService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.sync.CloudMarkingTaskUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,7 +36,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
-import java.io.*;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -586,20 +589,15 @@ public class DataSyncServiceImpl implements DataSyncService {
      * @param content 要生成的文件内容
      */
     public static File createJsonFile(String url, String content) {
-        BufferedWriter out = null;
         File file = new File(url);
         try {
             if (!file.exists()) {
                 file.getParentFile().mkdirs();
+                file.createNewFile();
             }
-            out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true)));
-            out.write(content);
+            IOUtils.write(content.getBytes(StandardCharsets.UTF_8), new FileOutputStream(file));
         } catch (Exception e) {
-        } finally {
-            try {
-                out.close();
-            } catch (IOException e) {
-            }
+            log.error(SystemConstant.LOG_ERROR, e);
         }
         return file;
     }

+ 20 - 8
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -21,13 +21,13 @@ import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.*;
 import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.FileCopyUtils;
 import org.springframework.util.LinkedMultiValueMap;
 
 import javax.annotation.Resource;
@@ -544,10 +544,13 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
 
         if (filePath.endsWith(SystemConstant.HTML_PREFIX) || filePath.endsWith(SystemConstant.FTL_PREFIX)) {
             StringBuffer sb = new StringBuffer();
+            File fileTemp = null;
+            InputStream fis = null;
             try {
-                InputStream fis = null;
+                fileTemp = SystemConstant.getFileTempVar(SystemConstant.HTML_PREFIX);
                 if (type.equals(SystemConstant.OSS)) {
                     fis = fileStoreUtil.ossDownloadIs(filePath, uploadType.getFssType());
+                    FileUtils.copyInputStreamToFile(fis, fileTemp);
                 } else {
                     File file = null;
                     if (dictionaryConfig.fssPrivateDomain().getConfig().startsWith(SystemConstant.START_PARENT) || dictionaryConfig.fssPublicDomain().getConfig().startsWith(SystemConstant.START_PARENT)) {
@@ -555,15 +558,24 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
                     } else {
                         file = new File(filePath);
                     }
-                    fis = new FileInputStream(file);
+                    FileCopyUtils.copy(file, fileTemp);
+                }
+                if (Objects.nonNull(fileTemp)) {
+                    sb.append(FileUtils.readFileToString(fileTemp, StandardCharsets.UTF_8));
                 }
-                ByteArrayOutputStream ou = new ByteArrayOutputStream();
-                IOUtils.copy(fis, ou);
-                sb.append(new String(ou.toByteArray(), StandardCharsets.UTF_8));
-            } catch (IOException e) {
-                throw ExceptionResultEnum.ERROR.exception("文件读取异常");
             } catch (Exception e) {
                 log.error(SystemConstant.LOG_ERROR, e);
+            } finally {
+                if (Objects.nonNull(fis)) {
+                    try {
+                        fis.close();
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                }
+                if (Objects.nonNull(fileTemp)) {
+                    fileTemp.delete();
+                }
             }
             return sb.toString();
         }

+ 2 - 7
teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/FileUtil.java

@@ -3,7 +3,7 @@ package com.qmth.teachcloud.common.util;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import org.apache.commons.io.FileUtils;
-import org.apache.tomcat.util.http.fileupload.IOUtils;
+import org.apache.commons.io.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.web.multipart.MultipartFile;
@@ -166,12 +166,7 @@ public class FileUtil {
                     }
                 }
             }
-
-            FileOutputStream fos = new FileOutputStream(file);
-            OutputStreamWriter write = new OutputStreamWriter(fos, encoding);
-            bw = new BufferedWriter(write);
-            bw.write(content);
-            bw.flush();
+            IOUtils.write(content.getBytes(StandardCharsets.UTF_8), new FileOutputStream(file));
         } catch (IOException e) {
             throw ExceptionResultEnum.ERROR.exception("保存文件出错" + e.getMessage());
         } finally {