读取 UTF-8 属性文件并保存为 UTF-8 txt 文件
Read UTF-8 properties file and save as UTF-8 txt file
我目前正在尝试分析我所有的属性文件,其中一部分需要 .txt 文件形式的属性文件。问题是像 Ä、Ü、Ö 等德语 "Umlaute" 没有被正确接管,因此我的程序无法运行。 (如果我手动将文件转换成 txt 没有问题,但整个过程应该 运行 动态)
这是我目前使用的代码:
private static void createTxt(String filePath, String savePath) throws IOException {
final File file = new File(filePath);
final BufferedReader bReader = new BufferedReader(new FileReader(file.getPath()));
final List<String> stringList= new ArrayList<>();
String line = bReader.readLine();
while (line != null) {
stringList.add(line);
line = bReader.readLine();
}
final Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(savePath), "UTF-8"));
try {
for (final String s : stringList) {
out.write(s + "\n");
}
}
finally {
out.close();
}
}
txt 的编码也是 UTF-8 - 我认为问题是由于 bufferedReader 或缓存到 ArrayList
感谢您的宝贵时间和帮助,
LG 帕斯卡
读取和写入文件时,您应该始终设置一个字符集。 FileReader 有一个接受字符集的构造函数。
new FileReader(file, StandardCharsets.UTF_8)
如果您只想读取文件中的所有行,只需使用 Files.readAllLines(path, StandardCharsets.UTF_8);
要写你可以使用Files.write(path, listOfStrings, StandardCharsets.UTF_8);
如果您只想复制文件,只需使用 Files.copy(source, target);
我目前正在尝试分析我所有的属性文件,其中一部分需要 .txt 文件形式的属性文件。问题是像 Ä、Ü、Ö 等德语 "Umlaute" 没有被正确接管,因此我的程序无法运行。 (如果我手动将文件转换成 txt 没有问题,但整个过程应该 运行 动态)
这是我目前使用的代码:
private static void createTxt(String filePath, String savePath) throws IOException {
final File file = new File(filePath);
final BufferedReader bReader = new BufferedReader(new FileReader(file.getPath()));
final List<String> stringList= new ArrayList<>();
String line = bReader.readLine();
while (line != null) {
stringList.add(line);
line = bReader.readLine();
}
final Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(savePath), "UTF-8"));
try {
for (final String s : stringList) {
out.write(s + "\n");
}
}
finally {
out.close();
}
}
txt 的编码也是 UTF-8 - 我认为问题是由于 bufferedReader 或缓存到 ArrayList
感谢您的宝贵时间和帮助, LG 帕斯卡
读取和写入文件时,您应该始终设置一个字符集。 FileReader 有一个接受字符集的构造函数。
new FileReader(file, StandardCharsets.UTF_8)
如果您只想读取文件中的所有行,只需使用 Files.readAllLines(path, StandardCharsets.UTF_8);
要写你可以使用Files.write(path, listOfStrings, StandardCharsets.UTF_8);
如果您只想复制文件,只需使用 Files.copy(source, target);