• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

jiangxincode / ApkToolBoxGUI / #667

31 Mar 2024 01:48AM UTC coverage: 3.164% (-0.05%) from 3.216%
#667

push

jiangxincode
Merge branch 'master' of https://github.com/jiangxincode/ApkToolBoxGUI

236 of 7459 relevant lines covered (3.16%)

0.03 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

62.5
/src/main/java/edu/jiangxin/apktoolbox/file/core/EncoderConvert.java
1
package edu.jiangxin.apktoolbox.file.core;
2

3
import java.io.BufferedReader;
4
import java.io.BufferedWriter;
5
import java.io.File;
6
import java.io.FileInputStream;
7
import java.io.FileOutputStream;
8
import java.io.InputStreamReader;
9
import java.io.OutputStreamWriter;
10
import java.util.Collection;
11
import java.util.Iterator;
12
import java.util.List;
13

14
import org.apache.commons.io.FileUtils;
15
import org.apache.commons.lang3.StringUtils;
16
import org.apache.logging.log4j.LogManager;
17
import org.apache.logging.log4j.Logger;
18

19
/**
20
 * 文件编码转换的工具类.
21
 * 
22
 * @author jiangxin
23
 * @author 2018-09-09
24
 *
25
 */
26
public class EncoderConvert {
×
27

28
    private static final String TMP_SUFFIX = ".temp";
29
    private static final Logger logger = LogManager.getLogger(EncoderDetector.class.getSimpleName());
1✔
30

31
    /**
32
     * 实现对文件的编码转换.
33
     * 
34
     * @param srcFileString 源文件文件名
35
     * @param srcEncoder    源文件编码
36
     * @param desFileString 目的文件文件名
37
     * @param desEncoder    需要转换的编码
38
     */
39
    public static void encodeFile(String srcFileString, String srcEncoder, String desFileString, String desEncoder) {
40
        if (srcFileString.equals(desFileString)) {
1✔
41
            srcFileString = srcFileString + EncoderConvert.TMP_SUFFIX;
×
42
            FileProcess.copyFile(desFileString, srcFileString);
×
43
        }
44
        File srcFileFile = new File(srcFileString);
1✔
45
        File desFileFile = new File(desFileString);
1✔
46

47
        File parentDir = desFileFile.getParentFile();
1✔
48
        if (!parentDir.exists()) {
1✔
49
            boolean success = parentDir.mkdirs();
1✔
50
            if (!success) {
1✔
51
                logger.error("delete srcFileFile failed");
×
52
                return;
×
53
            }
54
        }
55

56
        try (BufferedReader reader = new BufferedReader(
1✔
57
                new InputStreamReader(new FileInputStream(srcFileFile), srcEncoder));
58
                BufferedWriter writer = new BufferedWriter(
1✔
59
                        new OutputStreamWriter(new FileOutputStream(desFileFile), desEncoder))) {
60
            int ch = 0;
1✔
61
            while ((ch = reader.read()) != -1) {
1✔
62
                writer.write(ch);
1✔
63
            }
64
        } catch (Exception e) {
×
65
            logger.error("Exception", e);
×
66
            return;
×
67
        }
1✔
68

69
        if (srcFileString.equals(desFileString + EncoderConvert.TMP_SUFFIX)) {
1✔
70
            boolean success = srcFileFile.delete();
×
71
            if (!success) {
×
72
                logger.error("delete srcFileFile failed");
×
73
            }
74
        }
75
    }
1✔
76

77
    /**
78
     * 实现文件的编码转换. see {@link #encodeFile(String, String, String, String)}
79
     * 
80
     * @param fileString 文件名
81
     * @param srcEncoder 原始编码
82
     * @param desEncoder 需要转换的编码
83
     */
84
    public static void encodeFile(String fileString, String srcEncoder, String desEncoder) {
85
        encodeFile(fileString, srcEncoder, fileString, desEncoder);
×
86
    }
×
87

88
    /**
89
     * 实现文件夹中特定文件的批量编码转换. see {@link #encodeFile(String, String, String, String)}
90
     * 
91
     * @param srcDirString 原始文件夹
92
     * @param srcEncoder   原始编码
93
     * @param desDirString 目的文件夹
94
     * @param desEncoder   需要转换的编码
95
     * @param suffix       指定需要转换的后缀
96
     */
97
    public static void encodeDir(String srcDirString, String srcEncoder, String desDirString, String desEncoder,
98
            String suffix) {
99
        // File srcDirFile = new File(srcDirString);
100
        File desDirFile = new File(desDirString);
1✔
101
        // 获取所有符合条件的文件
102
        String[] extensions = null;
1✔
103
        if (StringUtils.isNotEmpty(suffix)) {
1✔
104
            extensions = suffix.split(",");
×
105
        }
106
        Collection<File> files = FileUtils.listFiles(new File(srcDirString), extensions, true);
1✔
107
        Iterator<File> it = files.iterator();
1✔
108
        while (it.hasNext()) {
1✔
109
            File tempFile = it.next();
1✔
110
            String desFileString = desDirFile.getAbsolutePath() + File.separator + tempFile.getName();
1✔
111
            String srcFileString = tempFile.getAbsolutePath();
1✔
112
            encodeFile(srcFileString, srcEncoder, desFileString, desEncoder);
1✔
113
        }
1✔
114
    }
1✔
115

116
    /**
117
     * 实现文件夹中特定文件的批量编码转换. see {@link #encodeFile(String, String, String, String)}
118
     * 
119
     * @param srcDirString 原始文件夹
120
     * @param srcEncoder   原始编码
121
     * @param desDirString 目的文件夹
122
     * @param desEncoder   需要转换的编码
123
     */
124
    public static void encodeDir(String srcDirString, String srcEncoder, String desDirString, String desEncoder) {
125
        encodeDir(srcDirString, srcEncoder, desDirString, desEncoder, null);
1✔
126
    }
1✔
127

128
    /**
129
     * 实现文件列表批量编码转换. see {@link #encodeFile(String, String, String, String)}
130
     * 
131
     * @param fromEncoder 原始编码
132
     * @param toEncoder   需要转换的编码
133
     */
134
    public static void encodeFiles(List<File> files, String fromEncoder, String toEncoder) {
135
        Iterator<File> it = files.iterator();
×
136
        while (it.hasNext()) {
×
137
            encodeFile(it.next().getAbsolutePath(), fromEncoder, toEncoder);
×
138
        }
139
    }
×
140
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc