FileWriter用某种方式写中文

问题描述 投票:2回答:1

请帮助我解决这个问题。我正在尝试编写一个读取.txt文件的代码,然后它将计算文件中每个字母的频率。这是我想出的:

public static void charCount(String file) throws IOException {
        FileReader fr = new FileReader(file);
        BufferedReader br = new BufferedReader(fr);

        int[] count = new int[26];
        String line;
        while ((line = br.readLine()) != null) {
            line = line.toUpperCase();
            char[] characters = line.toCharArray();
            for (int i = 0; i < line.length(); i++) {
                if ((characters[i] >='A') && (characters[i] <='Z')) {
                    count[characters[i] - 'A']++;
                }
            }
        }
        File file2 = new File("D:/Project/Aufgabe/Winter_2019/frequency.txt");
        file2.createNewFile();
        FileWriter fw = new FileWriter(file2);
        for (int i = 0; i < 26; i++) {
            fw.write(((char)(i + 'A')) + ": " + count[i]);
        }
        fw.close();
        br.close();
    }

[当我尝试使用System.out.println()在控制台中打印结果时,它会给出以下结果:

A: 15
B: 4
C: 9
D: 10
E: 2
F: 1
G: 0
H: 3
I: 5
J: 6
K: 3
L: 0
M: 2
N: 7
O: 3
P: 1
Q: 1
R: 0
S: 4
T: 0
U: 2
V: 0
W: 5
X: 0
Y: 1
Z: 0

我想要的是什么。但是,当我尝试将其写入文件时,它将在.txt文件中提供这些结果:

㩁ㄠ䈵›䌴›䐹›〱㩅㈠㩆ㄠ㩇〠㩈㌠㩉㔠㩊㘠㩋㌠㩌〠㩍㈠㩎㜠㩏㌠㩐ㄠ㩑ㄠ㩒〠㩓㐠㩔〠㩕㈠㩖〠㩗㔠㩘〠㩙ㄠ㩚〠

我对Java还是很陌生,因此非常感谢您的帮助。

java file-writing
1个回答
0
投票

更改此行fw.write((((char)(i +'A')))+“:” + count [i]);

to

fw.write(“” +((char)(i +'A'))+“:” + count [i]);

© www.soinside.com 2019 - 2024. All rights reserved.